scorpio1102 发表于 2014-6-5 14:29:29

(已解决)有个正则表达式不知道怎么写.求助.

本帖最后由 scorpio1102 于 2014-7-15 11:45 编辑

有两组数据:321-140605001
            :021-12345678
要求:在冒号后面但不包含冒号且不以32开头的三位或四位数字紧跟横杠'-'和8位数字.
(?<=:[^..........彻底凌乱了.求助.

kevinch 发表于 2014-6-5 15:44:50

(?ms)(?<=\:)(?!32)\d{3,4}\-\d{8}(?=\D)这个试下

lixiaolong 发表于 2014-6-5 19:58:26

本帖最后由 lixiaolong 于 2014-6-5 19:59 编辑

:(?!32)(\d+-\d{8}(?!\d))

scorpio1102 发表于 2014-6-6 10:58:14

本帖最后由 scorpio1102 于 2014-6-6 11:22 编辑

回复 3# lixiaolong


   看起来好像有点不理解,但用起来好像又OK.奇迹.
不以32开头的三位或四位数字没有限定吧.5位以上也匹配了.

lanfengc 发表于 2014-6-6 11:19:02

回复 4# scorpio1102


:(?!32)(\d{3,4}-\d{8}(?!\d))

亲测可以.

解释:
: 开头的必须为:
(?!32)之后的2个字符不能为32
\d{3,4}匹配数字3-4次
-   中间必须有 -
\d{8}符号-之后必须有8个数字
(?!\d)紧接着8个数字的那个字符不能为数字.

试试这些. 我测试没有问题的
:321-140605001
:021-12345678
:312-123331112
:323-140605001
:321-140605001
:0212-12345678
:312-123331112
:323-140605001
:321-140605001
:021-12345678
:31222-123331112
:323-140605001

scorpio1102 发表于 2014-6-6 11:20:20

回复 2# kevinch


    明白了,感谢.

scorpio1102 发表于 2014-6-6 11:29:52

回复 5# lanfengc


    冒号匹配进去了为啥没正则出来
    (?!\d)紧接着8个数字的那个字符不能为数字.我理解为非数字的意思,那怎么能又匹配到数字.

lanfengc 发表于 2014-6-6 11:32:39

回复 7# scorpio1102


    你要这个开始的冒号吗? 要的话就把冒号加到括号了.
(:(?!32)\d{3,4}-\d{8}(?!\d))

scorpio1102 发表于 2014-6-6 11:56:49

回复 8# lanfengc


    明白了,不要冒号,不明白为什么不是(?!\D)

lanfengc 发表于 2014-6-6 12:05:15

回复 9# scorpio1102


    (?!\D)和 (?!\d) 是不一样的。 详见帮助文件
页: [1]
查看完整版本: (已解决)有个正则表达式不知道怎么写.求助.