需要在正则表达式的开头添加 http:// 或 https://

Ron*_*n I 2 regex

http://我的正则表达式工作得很好,除了我想添加 url 必须包含or的要求https://,并且我尝试修复正则表达式会破坏它。任何帮助表示赞赏!

    let rx = new RegExp(/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-_]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!\/\\\w]*))?)/g);
let replaced = text.replace(
        rx,
        `<a href="$1" target="_blank">$1</a>`
    ); 
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

[A-Za-z]{3,9}:(?:\/\/)?用。。。来代替https?:\/\/。由于您没有使用任何变量来构建正则表达式,因此请使用正则表达式文字而不是构造函数符号。

/\bhttps?:\/\/(?:(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www\.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)(?:\/[+~%\/.\w_-]*\??(?:[-+=&;%@.\w_]*)#?[.!\/\\\w]*)?/g
Run Code Online (Sandbox Code Playgroud)

查看在线正则表达式演示

\bhttps?:\/\/, 匹配或https://作为http://一个完整的单词,将适用于(?:(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www\.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+),(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+和中的两个替代项(?:www\.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+,因此也需要 之前的协议www.

还有很多冗余的捕获组,请考虑删除不需要的捕获组并将需要量化的转换为非捕获组。

/\bhttps?:\/\/(?:(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www\.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)(?:\/[+~%\/.\w_-]*\??(?:[-+=&;%@.\w_]*)#?[.!\/\\\w]*)?/g
Run Code Online (Sandbox Code Playgroud)

反向$&引用指的是整个正则表达式匹配值,不需要用一对额外的捕获括号包裹整个模式。