这可能是重复但我无法弄清楚这个正则表达式有什么问题。
<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中的值完全相同。而这实际上是真的。
答案 0 :(得分: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! :-)