2011-12-11 55 views
2

我试图找到以英镑符号开头的单词。的JavaScript。但正则表达式:单词开头的英镑符号

"test #word no#luck".replace(/\b#([\w]+)\b/g, "<#$1>"); 

字边界似乎并不适用于#-sign。它输出:

test #word no<#luck> 

还我有点糊涂了,我需要添加#-Sign又在替换模式“<#$ 1>”,因为算法似乎在这个过程中剥离它。

+0

的问题是, “#” 本身不是** **一个字的字符;因此在它之前有一个非单词到单词的过渡是没有意义的。 – Pointy

+0

由于#不是一个单词字符(它是[a-zA-Z0-9_])#符号后的每个单词都将被匹配。 – ncank

+1

而不是'\ b'你想要'(?= [^ \ w#])''。 – James

回答

0

这是我怎么会做它的工作:

result = subject.replace(/(^|\s)(#\w+)\b/g, "$1<$2>"); 
+0

完美!谢谢。 – evsc

0

试试这个:

result = subject.replace(/(?:^|\s)(#\w+)(?:\s|$)/g, "<$1>"); 

\b将只与\w

相关问题