1.<?php
header('Content-Type:text/html;charset=utf-8');
$subject = 'AEbbdsfasdfad23';
$count = preg_match('/[a-z]{2,11}[0-9]$/', $subject);
echo $count;
特别是[a-z]{2,11},匹配2-11次出现的小写字母,为什么匹配不成功?2.<?php
header('Content-Type:text/html;charset=utf-8');
$subject = 'AEbbdsfasdfads23';
$count = preg_match('/[a-z]?[0-9]$/', $subject);
echo $count;
这条[a-z]?,匹配小字字母0或1次,但我小写字母已经不止1次了,为什么还可以匹配成功?
header('Content-Type:text/html;charset=utf-8');
$subject = 'AEbbdsfasdfad23';
$count = preg_match('/[a-z]{2,11}[0-9]$/', $subject);
echo $count;
特别是[a-z]{2,11},匹配2-11次出现的小写字母,为什么匹配不成功?2.<?php
header('Content-Type:text/html;charset=utf-8');
$subject = 'AEbbdsfasdfads23';
$count = preg_match('/[a-z]?[0-9]$/', $subject);
echo $count;
这条[a-z]?,匹配小字字母0或1次,但我小写字母已经不止1次了,为什么还可以匹配成功?
$count = preg_match('/[a-z]{2,11}[0-9]$/', $subject);
echo $count;输出 0
因为你需要匹配的是以单个数字符结尾([0-9]$)
而 'AEbbdsfasdfad23' 最后是 2 个数字符subject = 'AEbbdsfasdfads23';
$count = preg_match('/[a-z]?[0-9]$/', $subject);
echo $count;
输出 1
既然你知道 [a-z]? 是匹配小字字母0或1次
那么尾部的 3 前面不正好是 0 个字母吗?
2[a-z]?[0-9]$表示匹配小字字母0或1次紧跟着一个以数字结尾的字符 因为小写的字母可以有也可以没有所以这个结果只匹配一个结尾的数字3
header('Content-Type:text/html;charset=utf-8');
$subject = 'AEbbdsfasdfads23';
$results = null;
preg_match_all('/([a-z]?[0-9])$/', $subject, $results);
var_dump($results);
输出:
array (size=2)
0 =>
array (size=1)
0 => string '3' (length=1)
1 =>
array (size=1)
0 => string '3' (length=1
array (size=1)
0 =>
array (size=1)
0 => string '3' (length=1)
正则表达式中的圆括号的作用是对字符进行分组,并保存匹配的文本
array (size=2)
0 => //匹配出来的0表示整个匹配出来的值
array (size=1)
0 => string '3' (length=1)
1 => //表示第一个括号匹配的结果
array (size=1)
0 => string '3' (length=1
建议你去下个正则的手册看看 里面都是些基础的可以学习