[问题] 正规表达式可以判短长度吗

楼主: arnold0613 (凯)   2014-05-29 01:34:02
请问高手 我若限定一定要10个数字 可以用正规处理吗
作者: LPH66 (-6.2598534e+18f)   2014-05-29 01:36:00
[0-9]{10} 不过印象中有些 regexp 不支援 {}唔, 应该要加个边界: [^0-9][0-9]{10}[^0-9]如果你是要整个字串就只有 10 个数字那可以加 ^...$就变成 ^[0-9]{10}$ 这个样子
楼主: arnold0613 (凯)   2014-05-29 01:45:00
我是用php写 认证手机 09开头但是若输入11个数字也是正确 我想用正规一次处理
作者: danny8376 (钓到一只猴子@_@)   2014-05-29 04:38:00
那就是楼上最后一个啦~
楼主: arnold0613 (凯)   2014-05-29 08:49:00
因为是检验10码的手机号码^09[0-9]{8}$刚测一下好像可
作者: filiaslayers (司马云)   2014-05-29 12:29:00
我想问一下,如果是要找出字串中的10位数字要怎么找?就是10个数字的左右可以是任意字,但就不能是数字
作者: KawasumiMai (さあ、死ぬがいい)   2014-05-29 13:30:00
[^0-9]([0-9]{10})[^0-9] ?[^0-9]([0-9]{10})[^0-9] 这样?(发现问号可能会误解
作者: filiaslayers (司马云)   2014-05-29 15:51:00
资质不好,看不太懂楼上的语法@@把^写在[里的用意是?
作者: KawasumiMai (さあ、死ぬがいい)   2014-05-29 15:56:00
印象中这是exception?也就是除了0-9以外的字
作者: filiaslayers (司马云)   2014-05-29 16:18:00
原来^有两种意思,感谢!!
作者: LPH66 (-6.2598534e+18f)   2014-05-29 16:19:00
是的, 不过我后来想到这只能找到真的在中间的 10 位数有些 regexp 有 lookbehind/lookahead 这样可以把边界情形抓住; 如果没有的话我记得好像也有方法做...
作者: s25g5d4 (function(){})()   2014-05-29 16:59:00
php 有 (?=pattern) 跟 (?<=pattern)
作者: KawasumiMai (さあ、死ぬがいい)   2014-05-29 17:10:00
对齁...这个好像只能找中间的后来有想到用^$搭配|去辨别头尾,但好像又会卡字^|[^0-9]([0-9]{10})[^0-9]|$ 这样逻辑顺序不对(^|[^0-9])([0-9]{10})([^0-9]|$) 这样好像会卡字
作者: mars90226 (火星人)   2014-05-29 17:15:00
最好搭配(?:) non-capture group,而且|的效能会比较差能用look ahead/look behind最好

Links booklink

Contact Us: admin [ a t ] ucptt.com