Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript test()冻结网页_Javascript_Regex_Tags - Fatal编程技术网

Javascript test()冻结网页

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);

我正在编写一个函数来提取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=[编辑的电子邮件]

由此:

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中也不感兴趣)