找到以下对象的正确regexpr模式:

找到以下对象的正确regexpr模式:,regex,Regex,查找6位和8位的所有未折叠或前面没有数字的区块: 例: 你会发现: 123456 222222 12345678 333333 987654 regexpr模式应该是什么 这个不行: (^|\D)((\d{6})|(\d{8}))($|\D)/g 为什么2222222集团不匹配。在123456之后的-在第一次迭代中与($)\D)模式部分匹配并使用,因此,最好使用(?!\D)(或(?=$\D,但是(?!\D)更快) 你可以用 (?:^|\D)(\d{6}(?:\d{2})?)(?!\d) 见

查找6位和8位的所有未折叠或前面没有数字的区块:

例:

你会发现:

123456
222222
12345678
333333
987654
regexpr模式应该是什么

这个不行:

(^|\D)((\d{6})|(\d{8}))($|\D)/g

为什么
2222222
集团不匹配。

123456
之后的
-
在第一次迭代中与
($)\D)
模式部分匹配并使用,因此,最好使用
(?!\D)
(或
(?=$\D
,但是
(?!\D)
更快)

你可以用

(?:^|\D)(\d{6}(?:\d{2})?)(?!\d)

详细信息

  • (?:^ |\D)
    -字符串或任何非数字的开头
  • (\d{6}(?:\d{2})
    -第1组:6位数字,可选后跟2位数字
  • (?!\d)
    -6位或8位数字后不允许有数字

在第一次迭代中,在
123456
之后的
-
($\D)
模式部分匹配并使用,因此,最好使用
(?!\D)
(或
(?=$\D
,但
(?!\D)
更快)

你可以用

(?:^|\D)(\d{6}(?:\d{2})?)(?!\d)

详细信息

  • (?:^ |\D)
    -字符串或任何非数字的开头
  • (\d{6}(?:\d{2})
    -第1组:6位数字,可选后跟2位数字
  • (?!\d)
    -6位或8位数字后不允许有数字

对于这一点,您可以使用负向前瞻和负向后视概念,如下所示:

(?<!\d)(\d{6}|\d{8})(?!\d)
(?
(?为负数,请向后看,以确保数字前面没有数字

(?!\d)
为负数,请查看并确保数字后面没有数字


您可以看到这个正则表达式的作用

您可以使用负向前看和负向后看的概念,如下所示:

(?<!\d)(\d{6}|\d{8})(?!\d)
(?
(?为负数,请向后看,以确保数字前面没有数字

(?!\d)
为负数,请查看并确保数字后面没有数字

您可以看到这个正则表达式的作用

我保留了这个解决方案:(?:^\D)(\D{6}(?:\D{2})(?!\D)

谢谢大家。 没问题。 祝你今天愉快 再见

我保留这个解决方案:(?:^\D)(\D{6}(?:\D{2})(?!\D)

谢谢大家。 没问题。 祝你今天愉快 再见