假设我有以下字符串:
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];
}
你至少很接近。