2

假设我有以下字符串:

Lorem #test ^%#test ipsum#test dolor #test sit #testamet.
      ^^^^^                          ^^^^^

我使用什么正则表达式来仅选择标记的#test实例?因此,如果它是另一个单词的一部分,或者其中包含其他字符,我不想选择它。

如果我要搜索 justtest我会使用/\btest\b/g,但\b似乎只有在文本以单词字符开头时才有效?

4

1 回答 1

2

没有确切的替代品,\b因为 JavaScript 没有后向断言

但是如果你不介意前面的空格字符成为匹配的一部分,你可以使用

/(?:^|\s)#test\b/m

"#test"如果它在行首或" #test"不在行首,则匹配。

如果您希望除空格之外的其他字符来分隔您的“单词边界”,那么您可以指定它们。例如,如果您想接受除\w字符以外的任何内容,请使用

/(?:^|\W)#test\b/m

这将匹配",#test""foo,#test,foo". 不幸的是,您无法摆脱比赛中的逗号。但是如果你使用

var match = /(?:^|\W)(#test)\b/m.exec(subject);
if (match != null) {
    result = match[1];
} 

你至少很接近。

于 2013-06-02T14:42:21.813 回答