2011-12-11 81 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

相關問題