1

我正在尝试以自由文本形式捕获 8 位电话号码。如果之前出现了特定的字符串,则应该忽略它。

我的正则表达式:

(\b(\+?001|002)?[-]?\d{4}(-|\s)?\d{4}\b)

捕捉:

+001 12345678
12345678

不捕获:

TTT-12345678-123
TTT-12345678

我正在尝试使用负面的外观,如下例所示:

\w*(?<!foo)bar

但只有当正则表达式没有后续组时,上述方法才有效。

4

1 回答 1

1

您可以使用

(?<!TTT-)(?<!\w)(?:\+?001|002)?[-\s]?\d{4}[-\s]?\d{4}\b

查看正则表达式演示

细节

  • (?<!TTT-)-TTT-左侧不允许立即
  • (?<!\w)- 左侧不允许立即出现字符字符
  • (?:\+?001|002)?- 一个可选的非捕获组,匹配 1 次或 0 次出现+001001002
  • [-\s]?- 可选-或空格
  • \d{4}- 任意四位数
  • [-\s]?\d{4}- - 一个可选的-或空格和任何四位数字
  • \b- 单词边界。

如果数字可以粘贴到右侧的单词 char 上,请将\b单词边界替换为右侧数字边界,(?!\d).

于 2020-07-01T09:31:09.090 回答