带有变量和.Test()的RegExp

时间:2014-04-14 20:21:43

标签: javascript regex

这可能是重复但我无法弄清楚这个正则表达式有什么问题。

<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中的值完全相同。而这实际上是真的。

1 个答案:

答案 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!  :-)