我想要写一个通用的模式,用于匹配域名和URL。我有一个类似于下面代码的案例。问题是,当我运行代码时,浏览器会冻结并手动关闭它。变量domain包含可以是yahoo.com和us.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)同样的问题。浏览器冻结,无法检查代码。
发布于 2017-05-23 22:10:44
由于要从字符串中创建RegExp,所以需要转义反斜杠:
myString.search("(https:\\/\\/)(.*\\.)*"+domain+"(\\/.*)*(\\/)*")老实说,我不知道为什么它会结冰,而不是抛出一个错误,或者只是不能正确匹配。
https://stackoverflow.com/questions/44145747
复制相似问题