Javascript test()冻结网页
我正在编写一个函数来提取URL中的参数,并使用正则表达式来识别URL中是否存在电子邮件,以便将其删除 以下是我的功能:Javascript test()冻结网页,javascript,regex,tags,Javascript,Regex,Tags,我正在编写一个函数来提取URL中的参数,并使用正则表达式来识别URL中是否存在电子邮件,以便将其删除 以下是我的功能: function redactEmail() { var emailRedacted = ""; try { var urlparams= window.location.search.replace("?",""); var urlparamsdecoded = decodeURIComponent(urlparams);
function redactEmail() {
var emailRedacted = "";
try {
var urlparams= window.location.search.replace("?","");
var urlparamsdecoded = decodeURIComponent(urlparams);
emailRedacted = urlparamsdecoded;
var emailRegex = /\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+/;
if (emailRegex.test(urlparamsdecoded)) {
emailRedacted = urlparamsdecoded.replace(emailRegex, '[REDACTED EMAIL]');
}
}
catch (e) {}
return emailRedacted;
}
这起到了回报的作用:
email=[编辑的电子邮件]
由此:
https://www.test.com/?email=test@test.com
但在某些情况下,此功能会阻止整个网站工作
我在GTM网站的标签中使用此功能,因此我无法访问该网站的源代码
网站停止工作的示例如下:
https://www.test.com/?token=_JxY5kgHdKMkO8uSYf77sEl9mJhD7NHwAlrsMfJ-1zg
网站完全停止工作
我调试了该函数,问题在于:
ow_emailRegex.test(ow_urlparamsdecoded)
test()
的替代方案<代码>匹配()也不起作用谢谢。在组内强制使用点或连字符模式,以避免后续的
+
/*
-量词模式匹配相同的字符:
\w+(?:[.-]\w+)*@\w+(?:[.-]\w+)*(?:\.\w{2,3})+
查看正则表达式如何在字符串上优雅地失败
请注意,所有[\.-]?
都被转到[.-]
,整个[.-]\w+
组仍然是可选的,因为*
匹配0个或多个匹配项。点在字符类中没有任何特殊之处,这就是我删除反斜杠的原因
此外,您可能会使用非捕获组,因为您对获取这些子匹配不感兴趣(实际上,在JavaScript中也不感兴趣)