查找所有6位和8位未跟随或未包含数字的集团:
Ex:
123456-222222VALUE_X334455667788STACKOVERFLOW12345678()333333KO-987654,36CODING6
您应该找到:
123456
222222
12345678
333333
987654
什么是正则表达式模式?
这不起作用:
(^|\D)((\d{6})|(\d{8}))($|\D)/g
为什么222222
组不匹配。
答案 0 :(得分:2)
在第一次迭代期间,将-
之后的123456
与($|\D)
模式部分匹配并消耗掉,因此,最好使用(?!\d)
(或{ {1}},但(?=$|\D
更快。
您可以使用
(?!\d)
请参见regex demo
详细信息
(?:^|\D)(\d{6}(?:\d{2})?)(?!\d)
-字符串开头或任何非数字(?:^|\D)
-第1组:6位数字,后跟2位数字(\d{6}(?:\d{2})?)
-不允许在6或8位数字之后输入数字。答案 1 :(得分:2)
您可以为此使用否定的前瞻性概念和否定的后瞻性概念,如下所示:
(?<!\d)(\d{6}|\d{8})(?!\d)
(?<!\d)
是负向后移,以确保数字前面没有数字。
(?!\d)
为负性,以确保数字后没有数字。
您可以在操作here中看到此正则表达式
答案 2 :(得分:0)
我保留此解决方案:(?:^ | \ D)(\ d {6}(?:\ d {2})?)(?!\ d)
谢谢大家。 跑了 祝你今天愉快 再见