作者arnold0613 (凯)
看板RegExp
标题[问题] 正规表达式可以判短长度吗
时间Thu May 29 01:34:02 2014
请问高手 我若限定一定要10个数字 可以用正规处理吗
--
Sent from my Android
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.126.98.174
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/RegExp/M.1401298445.A.D42.html
1F:推 LPH66:[0-9]{10} 不过印象中有些 regexp 不支援 {} 05/29 01:36
2F:→ LPH66:唔, 应该要加个边界: [^0-9][0-9]{10}[^0-9] 05/29 01:37
3F:→ LPH66:如果你是要整个字串就只有 10 个数字那可以加 ^...$ 05/29 01:38
4F:→ LPH66:就变成 ^[0-9]{10}$ 这个样子 05/29 01:38
5F:→ arnold0613:我是用php写 认证手机 09开头但是若输入11个数字也是 05/29 01:45
6F:→ arnold0613:正确 我想用正规一次处理 05/29 01:45
7F:→ danny8376:那就是楼上最後一个啦~ 05/29 04:38
8F:→ arnold0613:因为是检验10码的手机号码^09[0-9]{8}$刚测一下好像可 05/29 08:49
9F:推 filiaslayers:我想问一下,如果是要找出字串中的10位数字要怎麽找? 05/29 12:29
10F:→ filiaslayers:就是10个数字的左右可以是任意字,但就不能是数字 05/29 12:29
11F:推 KawasumiMai:[^0-9]([0-9]{10})[^0-9] ? 05/29 13:30
12F:→ KawasumiMai:[^0-9]([0-9]{10})[^0-9] 这样?(发现问号可能会误解 05/29 13:30
13F:推 filiaslayers:资质不好,看不太懂楼上的语法@@把^写在[里的用意是? 05/29 15:51
14F:→ KawasumiMai:印象中这是exception?也就是除了0-9以外的字 05/29 15:56
15F:推 filiaslayers:原来^有两种意思,感谢!! 05/29 16:18
16F:推 LPH66:是的, 不过我後来想到这只能找到真的在中间的 10 位数 05/29 16:19
17F:→ LPH66:有些 regexp 有 lookbehind/lookahead 这样可以把边界情形 05/29 16:19
18F:→ LPH66:抓住; 如果没有的话我记得好像也有方法做... 05/29 16:21
19F:推 s25g5d4:php 有 (?=pattern) 跟 (?<=pattern) 05/29 16:59
20F:推 KawasumiMai:对齁...这个好像只能找中间的 05/29 17:10
21F:→ KawasumiMai:後来有想到用^$搭配|去辨别头尾,但好像又会卡字 05/29 17:10
22F:→ KawasumiMai:^|[^0-9]([0-9]{10})[^0-9]|$ 这样逻辑顺序不对 05/29 17:11
23F:→ KawasumiMai:(^|[^0-9])([0-9]{10})([^0-9]|$) 这样好像会卡字 05/29 17:12
24F:→ mars90226:最好搭配(?:) non-capture group,而且|的效能会比较差 05/29 17:15
25F:→ mars90226:能用look ahead/look behind最好 05/29 17:15