只是好奇。有什麼區別?格式化動態正則表達式
var a=text.replace(/(Nullam|ligula|in)/ig,'`<b>$1</b>`');
與
var string = "Nullam|lingula|in";
var pattern = new RegExp (string, "ig");
var a=text.replace(pattern ,'`<b>$1</b>`');
這應該給出了相同的結果,但事實並非如此。有什麼想法嗎?
謝謝
只是好奇。有什麼區別?格式化動態正則表達式
var a=text.replace(/(Nullam|ligula|in)/ig,'`<b>$1</b>`');
與
var string = "Nullam|lingula|in";
var pattern = new RegExp (string, "ig");
var a=text.replace(pattern ,'`<b>$1</b>`');
這應該給出了相同的結果,但事實並非如此。有什麼想法嗎?
謝謝
你在後面的聲明中缺少parens,所以沒有捕獲。而該標誌爲gi
,不ig
(雖然我不知道這有什麼差別)
var reString = "(Nullam|lingula|in)"; var pattern = new RegExp (reString, "gi");
例如,當第一個技巧找到一個單詞時,它會使它變成粗體,並且不會'替換單詞。與此同時,當第二個人找到一個單詞時,它會使其變得粗體,並且從字面上將它替換爲「$ 1」。這是我的實驗所產生的結果。我試圖達到的目的就是讓這個詞變成粗體而不用直接替換這個詞。這可能嗎? (帶動態關鍵字) – Nebby
是的,那是因爲你錯過了創建捕獲組的parens。 – Mrchief
按照你的建議。我試過了,無法讓它工作。這裏是我的實驗: 第一種技術http://jsfiddle.net/oceog/q8S7E/ AND 第二種技術:http://jsfiddle.net/UyWTf/1/ – Nebby
如果你在第二個例子中寫道'$ 0',而不是'$ 1',那麼你會得到相同的導致兩者。實際上,如果你在第一個例子中使用了'$ 0',你也會得到。 –