JavaScript中的RegEx冻结并且永远不会返回值

时间:2017-05-23 22:00:05

标签: javascript regex

我想编写一个用于匹配域名和URL的通用模式。我有一个类似下面的代码的案例。问题是,当我运行代码时,浏览器冻结,我手动关闭它。变量domain包含域名,其格式可以是:yahoo.comus.yahoo.com。变量myString是要针对存储的URL进行测试的URL。如果字符串共享存储的域名,则测试应该是成功的,例如,在下面的示例中,匹配将为-1,因为域为google.co.uk,而字符串为google.com。但我没有得到-1的结果。相反,程序冻结了。可能是什么问题?

var domain="accounts.google.co.uk";
myString="https://accounts.google.com/ManageAccount";

var result=myString.search("(https:\/\/)(.*\.)*"+domain+"(\/.*)*(\/)*");
console.log(result);

修改 还尝试过:

var patt = new RegExp("(https:\/\/)(.*\.)*"+domain+"(\/.*)*(\/)*");
var result=patt.test(myString)

同样的问题。浏览器冻结,无法检查代码。

1 个答案:

答案 0 :(得分:0)

由于你要从字符串创建一个RegExp,你需要转义反斜杠:

myString.search("(https:\\/\\/)(.*\\.)*"+domain+"(\\/.*)*(\\/)*")

老实说,我不知道为什么它会冻结而不是抛出错误或者无法正常匹配。