1

我有一组非常具体的要求来定义我想要匹配的字符串,并且我有以下工作正则表达式:

/^#\s*([-a-zA-Z]+)(?=\s|$)/

这匹配:'#keyword' ...以及:'#Statickeyword'

对于我的最后一个条件,我想忽略一个字符串,如果它包含这个词:“静态”。我已经做了很多挖掘,但我无法弄清楚这个。以下是我最好的尝试:

/^#\s*(?!Static)([-a-zA-Z]+)(?=\s|$)/

但是,似乎我离解决方案还很远。

4

2 回答 2

5

您需要Static在更多的地方寻找,而不仅仅是紧随其后#和空格:

/^#\s*(?!.*Static)([-a-zA-Z]+)(?=\s|$)/

顺便说一句,您可能想要替换(?=\s|$)\b(在字母数字单词之后匹配的单词边界锚点)。如果标点符号或空格以外的其他内容分隔您要匹配的单词,那也将匹配。

于 2013-07-19T18:37:10.200 回答
0

你可以使用这个:

/^(?>[^S]++|S++(?!tatic\b))+$/

或者这个允许“静电”:

/^(?>[^S]++|\BS++|\bS(?!tatic\b))+$/
于 2013-07-20T06:00:45.077 回答