Google Analytics(分析)的RegExp真的有作用吗?

时间:2018-10-07 14:44:07

标签: javascript regex google-analytics

这是代码部分:

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 个答案:

答案 0 :(得分:1)

(?:https?|mailto|ftp)匹配httphttpsmailtoftp,后跟 :|[^:/?#]*,或者::或除:/>#之外的任何其他字符,零次或多次,然后跟着(?:[/?#]|$),这表示/?#或结尾之一($的字符串。

它将匹配mailto:ftp:https:ftpasda(以ftphttps,{{1}开头的任何字符串},http后跟冒号或mailto以外的任何其他数字)。

更新

检查后,发现非捕获组之外的替代不仅适用于结肠,也适用于整个组。因此,如果:/>#或替换中的任何字符串都不匹配,则正则表达式引擎将在提及的替换的另一侧尝试匹配模式。这是不匹配的字符串的示例:mailtoDemo.