使用 URL 将 var 传递给正则表达式不匹配



我正在尝试用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");

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

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时,您需要双重转义正则表达式文本中转义的任何内容。转义对于/不是必需的,因为它们仅在使用文本时才是特殊的。

哦,您的示例中不需要 g 标志。

在jsFiddle上

最新更新