2015-02-12 56 views
1

我有一個正則表達式,它與我的數組匹配,但它沒有顯示最後一個括號。我的JS代碼最後一個括號在這個表達式中去掉了哪裏是

function decodeEntities(s){ 
    var str, temp= document.createElement('p'); 
    temp.innerHTML= s; 
    str= temp.textContent || temp.innerText; 
    temp=null; 
    return str; 
} 
var code = ["<span>","<div>","<pre>","<spat>"]; 

    var string = code.join(", "); 
    var string_to_pass="<span"; 
    var re = new RegExp("(?:^|\\W)" + decodeEntities(string_to_pass) + "(\\w+)(?!\\w)", "g"), match, matches = []; 
while (match = re.exec(string)) { 
    matches.push(match[0]); 
} 
console.log(matches); 

我看到一個數組中有兩個匹配的控制檯沒有最後一個右括號。

Array [ "<span", " <spat" ] 

如何停止刪除最後一個括號>的腳本。也許是因爲你還沒有列入'string_to_pass`一個右括號請幫助在此先感謝

+1

?我在其餘的正則表達式中看不到一個,那麼爲什麼你會期望匹配? – Aiken 2015-02-12 08:28:23

回答

1

改變你的正則表達式,

var re = new RegExp("(?:^|\\W)" + decodeEntities(string_to_pass) + "(\\w+\\W)", "g"), match, matches = []; 
+0

或'「(?:^ | \\ W)」+ decodeEntities(string_to_pass)+「(\\ W | $)」' – 2015-02-12 08:09:04

+0

它的工作,非常感謝您的幫助。在10分鐘內將接受這個答案是正確的 – user3647254 2015-02-12 08:09:13

相關問題