使用URL将var传递给regex不匹配

时间:2014-03-02 04:56:44

标签: javascript regex

我正在尝试用JS替换一些URL。 我不明白,为什么正则表达式在这里不匹配。 我在这个网站上测试了我的表达:http://www.regular-expressions.info/javascriptexample.html 我在这里得到了积极的结果,但不是我自己的剧本。 有人可以帮忙吗?

var pattern = new RegExp("http://www\.example\.com/out/\?url=","g");
var context = "http://www.example.com/out/?url=http://google.com";
if(context.match(pattern))
{
    context = context.replace(pattern,"");
    alert(context);
}
else
    alert("no match");

1 个答案:

答案 0 :(得分:1)

使用正则表达式文字时,以下内容是正确的。

var pattern = /http:\/\/www\.example\.com\/out\/\?url=/;

使用new RegExp时,以下内容是正确的

//var pattern = /http:\/\/www\.example\.com\/out\/\?url=/;
//var pattern = new RegExp("http:\\/\\/www\\.example\\.com\\/out\\/\\?url=");
var pattern = new RegExp("http://www\\.example\\.com/out/\\?url=");

var context = "http://www.example.com/out/?url=http://google.com";

if (context.match(pattern)) {
    context = context.replace(pattern, "");
    alert(context);
} else {
  alert("no match");
}

我没有查看网站链接,看看他们对您的输入做了什么。

但基本上在使用RegExp时,您需要双重转义在regexp文字中转义的任何内容。 /不需要转义,因为它们在使用文字时才是特殊的。

哦,你的例子中不需要g标志。

jsFiddle