2014-04-14 84 views
1

這可能是重複的,但我只是無法弄清楚這個正則表達式有什麼問題。RegExp與變量和.Test()

<p id="demo">Result comes here:</p> 
<button onclick="myFunction()">Check</button> 

<script> 
function myFunction() 
{ 
    var str = "The best things in life are free"; 
    var sTerm="things"; 
    var regXSearch= "/\\b"+sTerm+"/gi"; 
    var regX = new RegExp(regXSearch); 
    //var regX= new RegExp(/\bthings/gi); 
    var result = regX.test(str); 

    document.getElementById("demo").innerHTML=result; 
} 
</script> 

由於某種原因,這返回false。如果我檢查regXSearch變量的值,它將與註釋掉的regX RegExp中的值完全相同。事實上這是真的。

回答

2

你正在結合兩種不同的正則表達式語法。試試這個:

var regXSearch= "\\b"+sTerm; 
var regX = new RegExp(regXSearch, "gi"); 

您可以使用正則表達式文字如

/\bthings/gi 

,或者您可以使用RegExp構造函數是這樣的:

new RegExp("\\bthings", "gi") 

雖然我看不出有什麼充分的理由這樣做,你甚至可以做

new RegExp(/\bthings/gi) 

但你是這些非法的組合:

new RegExp("/\\bthings/gi"); // DON'T DO THIS! :-) 
+0

感謝的人,就像一個魅力。 – user2596886

+0

很高興聽到它。 –