假设我有以下字符串:
Lorem #test ^%#test ipsum#test dolor #test sit #testamet.
^^^^^ ^^^^^
我使用什么正则表达式来仅选择标记的#test
个实例?因此,如果它是另一个单词的一部分或者其中有其他字符,我不想选择它。
如果我只搜索test
,我会使用/\btest\b/g
,但如果文字以字符开头,\b
似乎只有效吗?
答案 0 :(得分:2)
\b
没有确切的替代品,因为JavaScript没有lookbehind assertions。
但是如果你不介意前面的空格字符成为匹配的一部分,你可以使用
/(?:^|\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];
}
你至少接近了。