RegEx匹配带有破折号的独立字符串

时间:2014-08-28 13:06:30

标签: regex string

如果周围没有短划线字符,我需要编写一个RegEx来匹配“1-234-5678”字符串。

我有以下RegEx:

\b\d\-\d{3}\-\d{4}\b

现在这个工作正常,并在下面的字符串中正确匹配“1-234-5678”:

  • text 1-234-5678 text
  • 111 1-234-5678 1212

RegEx也正确地不匹配以下字符串中的“1-234-5678”:

  • text1-234-5678text
  • 1111-234-56781212

但问题是它也匹配以下字符串:

  • 文本1-234-5678文本
  • 111-1-234-5678-1212

这是因为\b在破折号之前和之后匹配。

如果前面或后面有短划线,如何消除匹配?

1 个答案:

答案 0 :(得分:1)

使用否定的lookbehind和负向前瞻来检查上述格式是否前面跟着-符号,

(?<!-)\b\d\-\d{3}\-\d{4}\b(?!-)

DEMO