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使用{}
格式不允许加粗,所以我用^
来表示应该加粗的部分。否则,将其保留为普通字符串有点难以阅读:(哦,对了,忘了更改粗体。谢谢,这绝对有帮助!