Javascript 正则表达式:\b用于不带';不要以单词字符开头?

Javascript 正则表达式:\b用于不带';不要以单词字符开头?,javascript,regex,Javascript,Regex,假设我有以下字符串: Lorem #test ^%#test ipsum#test dolor #test sit #testamet. ^^^^^ ^^^^^ 我应该使用什么正则表达式仅选择标记的#test实例?因此,如果它是另一个单词的一部分,或者如果它有其他字符,我不想选择它 如果我只搜索test,我会使用/\btest\b/g,但是\b似乎只有在文本以单词字符开头时才起作用?没有确切的替代品来代替\b,因为JavaScrip

假设我有以下字符串:

Lorem #test ^%#test ipsum#test dolor #test sit #testamet.
      ^^^^^                          ^^^^^
我应该使用什么正则表达式仅选择标记的
#test
实例?因此,如果它是另一个单词的一部分,或者如果它有其他字符,我不想选择它


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

没有确切的替代品来代替
\b
,因为JavaScript没有

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

/(?:^|\s)#test\b/m
如果在行首,则匹配
“#测试”
;如果不在行首,则匹配
“#测试”

如果需要空格以外的其他字符来划定“单词边界”,则可以指定它们。例如,如果您不想接受
\w
字符,则使用

/(?:^|\W)#test\b/m
“foo,#test,foo”
中,哪个将匹配
,#test“
。不幸的是,你不能在比赛中去掉逗号。但是如果你使用

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

你至少很接近了。

测试它前面或后面是否有空格字符(以及开头或结尾或字符串)。它是否匹配
foo、#Test、bar
?@Hendrik:我的意思是,在这个字符串中它是否匹配
#Test
foo、#Test,bar
@Jerry:我觉得你的编辑有点过火了:)@TimPietzcker使用
{}
格式不允许加粗,所以我用
^
来表示应该加粗的部分。否则,将其保留为普通字符串有点难以阅读:(哦,对了,忘了更改粗体。谢谢,这绝对有帮助!