首页 > 解决方案 > 为什么我的负面回顾在正则表达式中不起作用?

问题描述

这是我的正则表达式:

\w*\d{6,}\.*\-*\d|[a-z]{2}\-{1}[0-9]+\-\d*

这是我的干草堆

+19185555555:这是 Scott 在塔尔萨的任何一家公司。我们需要一名西班牙语翻译,以便在 2019 年 1 月 25 日星期五在任何建筑物举行 11:00 会议。444 S 不管大道,塔尔萨。姓氏是麦克道尔。联系人是凯瑟琳泽塔琼斯 918-555-5555。推荐 #1973756 上午 11:28

我制作了正则表达式,因此它不会捕获电话号码,但我发现这些讨厌的号码没有任何空格或破折号。幸运的是,在我的案例中可以识别它们,因为它们前面有一个“+”。

我只是想匹配推荐号码,但它一直在匹配两者,并输出第一个匹配项。

我已经尝试过负面的看法,但它不适用于任何正则表达式测试器。我的负面表情有什么问题?

(?<!\+)\w*\d{6,}\.*\-*\d|[a-z]{2}\-{1}[0-9]+\-\d*

标签: regex

解决方案


您可以\d在否定后向中添加字符集,以避免匹配符号后面的数字+

(?<![+\d])\w*\d{6,}\.*\-*\d|[a-z]{2}\-{1}[0-9]+\-\d*

演示:https ://regex101.com/r/8Kwqys/1


推荐阅读