如何在JavaScript中編寫正則表達式,它與所有Twitter類似的提及(@something)匹配,但不包含電子郵件地址。JavaScript中的正則表達式以提及
我需要在一個巨大的文本字段中捕獲無限數量的提及。應該捕獲具有不可打印字符和「@」前面的括號的字符串。
如何在JavaScript中編寫正則表達式,它與所有Twitter類似的提及(@something)匹配,但不包含電子郵件地址。JavaScript中的正則表達式以提及
我需要在一個巨大的文本字段中捕獲無限數量的提及。應該捕獲具有不可打印字符和「@」前面的括號的字符串。
/(?<!\w)@\w+/g
將是一個簡單的解決方案,但由於JavaScript不支持lookbehind它成爲一個不平凡的任務:
var matches = str.match(/(^|\W)@\w+/g);
for (var i=0; i<matches.length; i++)
matches[i] = matches[i].replace(/^[^@]/, "");
如果你想支持更廣泛的範圍字符(如從你的編輯),你可以使用
/(?<![^\s(]@\S+/g // or respectively
/(^|[\s(])@\S+/
偉大的解決方案! – Acacio
你可以使用這個表達式
/(\s|^)@[^\s]+/
\s
代表空間..
括號不適用。 – Acacio
糟糕的JavaScript正則表達式沒有lookbehind斷言。根據您的需要,在圓括號內添加標點符號,如'(\ s | \(| ^)'。 –
難道不會像'^ @ [a-zA-Z0-9] + $'?我不知道其他角色是否允許,但只需將它們添加到括號中。 – gsingh2011