簡體   English   中英

從javascript中的字符串變量創建正則表達式

[英]Create Regex from a string variable in javascript

var tags=["div","span","body"];
for (i=0; i<=tags.length; i++){
  source = source.replace(/\&lt\;<tags[i]/i, '<span class="tags[i]">&lt;tags[i]</span>');
}

基本上,我試圖將所有開頭的div,span和body標簽放在一個span上,並相應地設置一個類。 但是,我在將變量放入其中時遇到問題。

我可以為每個不同的標簽放置行和行,但是考慮到每次按鍵時都要調用此功能,因此我希望保持代碼盡可能小和高效。

還是還有其他選擇? 我的意思是,如果有可能遵循這些方針,那就更好了:

source = source.replace(/\&lt\;<div|<span/i, '<span class="div|span">&lt;div|span</span>');

但是,它顯然無法帶我到任何地方。

您可以使用RegExp對象從字符串構造正則表達式:

source = source.replace(new RegExp("\\&lt\\;<" + tags[i], "i"), '<span class="' + tags[i] + '">&lt;' + tags[i] + '</span>');

但是您也可以通過捕獲標簽並在替換中引用它來實現替代方案:

source = source.replace(/\&lt\;<(div|span|body)/i, '<span class="$1">&lt;$1</span>');

您可以在| (equivalent of OR)使用正則表達式| (equivalent of OR) | (equivalent of OR) :( ()用於獲取匹配的元素(div,span或body),您可以使用$1來獲取它們

source.replace(/<(div|span|body)/i,'<span class="$1">&lt;$1&gt;</span>')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM