我怎么能否定这个表达

时间:2017-12-30 03:22:15

标签: regex-negation

我完全不知道如何使用正则表达式。我不是初学者。

我想从字符串中找到任何无效的css名称,因此我可以排除它们。在线查找我找到了一种使用此方法选择有效名称的方法:

/-?[_a-zA-Z]+[_a-zA-Z0-9-]*/g

我想要做的是否定这个表达式,因此在这个示例输入中只匹配'1999':

holding-page single 1999 contact id-12 contact single single 

1 个答案:

答案 0 :(得分:2)

To"否定"表达式,将其转换为负向前看

/(?<!\S)(?!-?[_a-zA-Z]+[_a-zA-Z0-9-]*)\S+(?!\S)/g

请参阅live demo

这与一个完整的术语相匹配,但是的术语与正面的正则表达式相匹配。

A&#34;完整的术语&#34;匹配使用(?<!\S)\S+(?!\S)\S+(一个或多个非空白)包裹在负向环绕中,而不是非空格,以防止匹配术语的部分
注意&#34;不是非空白&#34;是与&#34; whitespace&#34;相同,因为&#34;不是非空白&#34;也匹配输入的开头和结尾,因此无效的前导和尾随术语也会匹配。

您的正面正则表达已经变为负面展望,将其封装在(?!...)中。