假设我有以下字符串:
Lorem #test ^%#test ipsum#test dolor #test sit #testamet.
^^^^^ ^^^^^
我使用什么正则表达式来仅选择标记的#test
实例?因此,如果它是另一个单词的一部分,或者其中包含其他字符,我不想选择它。
如果我要搜索 justtest
我会使用/\btest\b/g
,但\b
似乎只有在文本以单词字符开头时才有效?
假设我有以下字符串:
Lorem #test ^%#test ipsum#test dolor #test sit #testamet.
^^^^^ ^^^^^
我使用什么正则表达式来仅选择标记的#test
实例?因此,如果它是另一个单词的一部分,或者其中包含其他字符,我不想选择它。
如果我要搜索 justtest
我会使用/\btest\b/g
,但\b
似乎只有在文本以单词字符开头时才有效?
没有确切的替代品,\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];
}
你至少很接近。