【发布时间】:2019-07-12 13:04:14
【问题描述】:
我正在编写一个提取 URL 中的参数的函数,并且我正在使用正则表达式来识别 URL 中是否存在 电子邮件 以便将其删除。
这是我的功能:
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=[REDACTED EMAIL]
从此:
https://www.test.com/?email=test@test.com
但在某些情况下,此功能会阻止整个网站运行。
我在 GTM 网站的标签中使用此功能,因此我无法访问网站的源代码。
网站停止工作的一个例子是这样的:
https://www.test.com/?token=_JxY5kgHdKMkO8uSYf77sEl9mJhD7NHwAlrsMfJ-1zg
网站完全停止工作。
我调试了函数,问题出在:
ow_emailRegex.test(ow_urlparamsdecoded)
- 为什么会出现这个错误?
-
test()有替代品吗?match()也不起作用。
谢谢。
【问题讨论】:
标签: javascript regex tags