我怎样才能否定这个表达

How can I negate this expression

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

我想从字符串中找到任何无效的 css 名称,以便排除它们。在网上查找后,我找到了一种 select 有效名称的方法:

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

我想做的是否定这个表达式,这样在这个例子中只有'1999'匹配输入:

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

对"negate"一个表达式,把它变成负向展望:

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

参见 live demo

它的作用是匹配一个完整的术语,但匹配您的正则表达式。

A "complete term" 使用 (?<!\S)\S+(?!\S) 匹配,它是 \S+(一个或多个非空白)包裹在否定环视中而不是非空白以防止匹配 一个词的部分。
请注意 "not a non-whitespace" 与 "whitespace" 不同 而不是 ,因为 "not a non-whitespace" 也匹配输入的开始和结束,因此前导和尾随项无效也会匹配。

您的正面正则表达式已通过将其包含在 (?!...) 中变成负面展望。