2 qq451497909 qq451497909 于 2014.12.08 19:24 提问

php正则表达式数字+中文识别问题

写了一个匹配8位数字的正则表达式,"/\b\d{8}\b/",但匹配的时候发现输入数字+中文能通过,例如:11111111张三.输入数字+任意字符都不能通过.请问这是怎么回事?怎么解决呢

4个回答

showbo
showbo   Ds   Rxr 2014.12.08 20:14
已采纳

/^\d{8}$/

加首位限定符号

showbo
showbo 回复qq451497909: \b是匹配一个单词边界,也就是指单词和空格间的位置。1和字母算是单词的组合,所以碰到中文就是碰到边界了。^$要求字符串必须以数字开通和结束
大约 3 年之前 回复
qq451497909
qq451497909 谢谢您的回答,想问一下,^和$跟\b有什么区别,为什么按照我的写法11111111abc就不能正常通过,加中文就能通过呢
大约 3 年之前 回复
q107770540
q107770540   Ds   Rxr 2014.12.08 21:32
 /^[0-9]{8}$/
u013762572
u013762572   2014.12.08 23:45

没你想的难啊,只需要的一个表达式就可以: “[0-9]{8}”这个可以满足你的要求,本人亲测啊。

对于你的表达式,我的理解是,你的条件非常的苛刻,你现在的意思是必须是8个数字组成的字符串组成的一个单词才能满足要求,

当然汉字吗,我的理解是,就是已经到单词尾。。。。

chinmo
chinmo   Rxr 2014.12.09 16:48

艾玛,首先你要搞清楚你的需求,匹配还是限制
匹配是指只要含有8个数字就可以,那么只要正则表达式/(\d{8})/就可以了

如果是限制只能输入8个数字,那么就用/^\d{8}$/

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!