我想编写一个用于匹配域名和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)
同样的问题。浏览器冻结,无法检查代码。
答案 0 :(得分:0)
由于你要从字符串创建一个RegExp,你需要转义反斜杠:
myString.search("(https:\\/\\/)(.*\\.)*"+domain+"(\\/.*)*(\\/)*")
老实说,我不知道为什么它会冻结而不是抛出错误或者无法正常匹配。