这是代码部分:

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:"))

最佳答案

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

它将匹配mailto:ftp:https:ftpasda(以ftphttpshttpmailto开头的任何字符串,后跟冒号或除)。

更新

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

关于javascript - Google Analytics(分析)的RegExp确实有作用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52689595/

10-14 13:07