漫反射 发表于 2012-11-14 12:03:56

请问一下正则问题

提取的字符串) 40020028712
) 测字:40020028712
) 40020028712正则表达式[ ::](\d{9})(?=\v)|[ ::](\d{11,12})(?=\v)结果:1、
2、40020028712
3、
4、40020028712
5、
6、40020028712为什么得出来会有三个空白

漫反射 发表于 2012-11-14 12:12:24

怎么样才能精确到三个,那数字只有三种情况,9位、11位、12位

binghc 发表于 2012-11-14 12:12:36

因为你用了括号,并且这个括号匹配不到任何内容

xms77 发表于 2012-11-14 12:31:15

(?m)(\d{9}|\d{11,12})\b

afan 发表于 2012-11-14 12:38:22

\D(\d{9}|\d{11,12})(?=\v|$)

lixiaolong 发表于 2012-11-14 17:38:41

(?<!\d)(\d{9}|\d{11,12})(?!\d)

gzh888666 发表于 2012-11-15 12:43:11

呵呵,楼上都是正则高手!我想的很简单\d+足矣

lxwlxwayy 发表于 2012-11-15 20:29:11

什么阿,像看天书一样

xms77 发表于 2012-11-15 21:24:27

回复 9# lxwlxwayy
没有学习正则之前和你一样看上去是天书,学习了正则得皮毛后才知道正则易上手难精,但是正则真的很强大,对于文本处理,灵活高效,关键在于怎样用好。

annybaby 发表于 2012-11-26 16:39:04

\d{9,12}

不用考虑排除10个数字的情况,因为你已经说明了只有9,11,12三种情况,而不是
有很多种情况,但我只需要9,11,12三种情况

au3x 发表于 2012-11-26 18:15:09

为了学习,拼命付出金钱,值了

小影 发表于 2012-11-29 15:33:28

(\d{9}|\d{11,12})\b
页: [1]
查看完整版本: 请问一下正则问题