/^\w[12]\d{8}$/ 这是一个台湾身份证号的正则表达式,解释下\w[12]的意思?\w等价于[a-zA-Z0-9_],[12]是匹配所包含的任意一个字符,我要验证的号码为a211336196,这个验证成功了,但是我把[12]换成[5],把“a211336196”改成“511336196”就又验证失败了,为什么呢?这里就成了输入一位和输入两位的问题了,没想明白!
511336196当然会配置失败,你可以这样,从后面往前面看,d{8}匹配的是11336196,然后前面就剩了一个5,5是不能匹配[12]的
你没看清楚我的问题,我把[12]改成[5]了
我把/^\w[12]\d{8}$/改成了/^\w[5]\d{8}$/,然后把要验证的“a211336196”改成“511336196”就又验证失败了
@as、: 少了一位啊,\w没有匹配的
@artwl: 意思就是说必须要两位才可以对把?那为什么一位就错呢?
@as、: 改成了[5],要验证的511336196里面的第一个不是5吗?为什么说没有匹配呢?
@as、: 不是的,这要看你的需求了,可以用 *+?来控制的
@artwl: 改成了[5],要验证的511336196里面的第一个不是5吗?为什么说没有匹配呢?
@artwl:
$str='66';
if(preg_match("/^\b\w[6]\b$/",$str))
看这个例子 要是验证$str='66';就能验证成功,要是验证$str='6';就验证失败!
@artwl: 能解释下\w[6]的意思吗?
@as、: \w就是匹配[a-zA-Z0-9_]所包含的一个字行,[6]就是匹配数字6
@artwl: 那为什么我验证一个6就不行呢?
@artwl: 有点愚钝,莫怪撒、
@as、: 你这里 \w 并不是可选的,也就是说是必段匹配的,如果要可选可以写成这样 \w* 就可以了
@artwl: 如果说我一定要写成[6]这样的呢?就只能验证两位数的吗?还是说??????
@as、: 你的需求是什么?
你试试这个吧 \w?[6]
@artwl: 我又把它改成是\w[123],验证的必须是$str[12],才会成功,如果要是验证$str[1],那就是失败了。
@as、: 不知道你的需求是什么,建议看看《精通正则表达式》这本书
@artwl: 我就是把一个例子给改成自己所想的,代码如下:
$str='6';
if(preg_match("/^\b\w[6]\b$/",$str))
{
echo "验证成功!";
}
else
{
echo "验证失败!";
}
?>
然后我只想验证$str='6';但是验证是失败的,如果我验证$str='66';就能验证成功!
@as、: 用\w?[6]吧
匹配失败应该是第二个数字5的问题,第二个数字是1或者2
问题重新修改了 刚刚讲错了,再帮忙看看!
@as、:
把[12]换成[5],第二位就是5
\d{8}表示后面还有8位数
[12]匹配1或2
你要想限定\w的个数,用\w{n}
学习了。。。