[英]Javascript regex for tag in comments
我一直在開發一個Web應用程序,用戶可以在其中評論和回復評論,這使用了標記系統。 用戶使用他們的名字來標記,這個名字可以包含更多單詞,所以我決定標記這些:
&& John Doe &&
因此,注釋可能如下所示:
&& John Doe &&,您確定&& Alice Johnson &&不見了嗎?
我正在嘗試編寫正則表達式以匹配string.replace()javascript函數中的用法,因此正則表達式必須匹配字符串中的每個標記。
到目前為止,我有:
^&&.+{2, 64}&&$
這是行不通的,所以我確定有些問題,以防萬一您不明白我的意思,上面的正則表達式應該匹配這樣的字符串:
&& anythingbetween2and64charslong &&。
提前致謝!
(.*?)&&
表示“直到&&之前的一切”:
var before = document.getElementById("before"); var after = document.getElementById("after"); var re = /&&(.*?)&&/g, b = "<b>$1</b>"; after.innerHTML = before.textContent.replace(re, b);
<p id="before">&&John Doe&&, are you sure that &&Alice Johnson&& is gone?</p> <p id="after"></p>
嘗試&{2}.{2,64}&{2}
如果要在匹配組之間添加括號之間進行匹配
&{2}(.{2,64})&{2}
現在你只檢查整行匹配的字符串
^
字符表示行的開頭$
字符表示行的結尾\\A
表示整個字符串的開頭\\Z
表示整個字符串的結尾
這是您需要的:
str.match(/&&.{2,64}?&&/g)
^
和$
,因為它們與字符串的開頭和結尾匹配。 /g
標志,以便所有匹配項都匹配 ?
{}
使匹配變得非貪婪之后,因此它將匹配“ &&”之間的最短字符串,而不是最長的字符串(將為您提供“ && John Doe &&”而不是“ && John Doe &&,您確定&& Alice Johnson &&”) 閱讀有關貪婪的內容: 與Star和Plus重復
此正則表達式將匹配&&符號之間的任何Unicode字母:
str.match(/\&\&[\p{L}\p{N}]+(?:\s+[\p{L}\p{N}]+)*\&\&/g);
這里,
\\p{L}
->任何unicode字母,名稱可以是任何語言和字母
\\p{N}
->任何Unicode數字
[\\p{L}\\p{N}]+
->由unicode字母或數字構成的單詞
\\s+
->單詞之間的間隔,最大3個長度
[\\p{L}\\p{N}]+(?:\\s+[\\p{L}\\p{N}]+)*
->所有單詞組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.