这是代码部分:
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)
匹配http
或https
或mailto
或ftp
后跟:|[^:/?#]*
,它是替代方法::
或除:/>#
之外的任何其他字符,零次或多次,然后跟着(?:[/?#]|$)
,表示/?#
或字符串结尾($
)之一。
它将匹配mailto:
,ftp:
,https:
,ftpasda
(以ftp
,https
,http
,mailto
开头的任何字符串,后跟冒号或除)。
更新
检查后,发现非捕获组之外的变更不仅适用于结肠,也适用于整个组。因此,如果:/>#
或替换中的任何字符串不匹配,则正则表达式引擎将在提及的替换的另一侧尝试匹配模式。这是不匹配的字符串的示例:mailto
。 Demo.
关于javascript - Google Analytics(分析)的RegExp确实有作用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52689595/