代码之家  ›  专栏  ›  技术社区  ›  wizzwizz4

Google Analytics的这个RegExp真的有用吗?

  •  0
  • wizzwizz4  · 技术社区  · 6 年前

    以下是代码部分:

    var 
    [...snip...]
    ye=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i,
    

    ye.test(a) 匹配。我觉得很难相信,但是 是这样吗 RegExp 真的匹配所有可以想象的字符串?

    演示:

    var ye = /^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;
    console.log(ye.test("askjvhlkauehavkn"))
    console.log(ye.test("/"))
    console.log(ye.test("https:"))
    console.log(ye.test("mailto/L:"))
    1 回复  |  直到 6 年前
        1
  •  1
  •   Michał Turczyn    6 年前

    (?:https?|mailto|ftp) 比赛 http https mailto ftp 然后 :|[^:/?#]* ,这是另一种选择: : 或者别的什么 :/># ,零次或多次,然后 (?:[/?#]|$) ,意思是 /?# 或字符串的结尾( $

    它会匹配的 mailto: , ftp: https: ftpasda 资金转移定价 https协议 , http协议 电子邮件 后跟冒号或任何数字 :/># ).

    经过检查,非捕获组之外的这种变化不仅适用于一个结肠,也适用于整个组。所以,如果 电子邮件 或者替换中的任何字符串不匹配,regex引擎将尝试在所述替换的另一侧匹配模式。以下是不匹配的字符串示例: ://///// . Demo.