Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html regex linkify URL忽略现有链接_Html_Regex - Fatal编程技术网

Html regex linkify URL忽略现有链接

Html regex linkify URL忽略现有链接,html,regex,Html,Regex,我构建了一个正则表达式,在URL周围放置一个锚标记,如下所示: http://www.google.com https://www.google.com http://google.com 它忽略大小写,也忽略链接中已有的URL,例如: <a href="hTTP://www.google.com">HttP://www.google.com</a> www.google.com 我保存的正则表达式可以在此处查看和调整: 下面是实际的正则表达式: (?i)(?&l

我构建了一个正则表达式,在URL周围放置一个锚标记,如下所示:

http://www.google.com
https://www.google.com
http://google.com
它忽略大小写,也忽略链接中已有的URL,例如:

<a href="hTTP://www.google.com">HttP://www.google.com</a>
www.google.com
我保存的正则表达式可以在此处查看和调整:

下面是实际的正则表达式:

(?i)(?<!")http(s)?:\/\/([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&amp;\\*\\(\\)_\\-\\=\\+\\\\\\\/\\?\\.\\:\\;\\'\\,]*+)(?!<\/a>)
(?i)(?你可以试试这个:

((?:http?)(:\/\/)((?:www\)([\w-]+)(\)(com)

细分:

  • ((?:http?(:\/\/))?
    -http
上的可选匹配,
https
加上
://
,但不单独匹配
://

  • (((?:www\)?)
    -在
    www.

  • ([\w-]+)
    -匹配一个或多个[a-zA-Zè]和连字符-这是针对
    google
    部分的

  • (\)
    -在
    谷歌
    com
    之间匹配一个

  • (com)
    -只需匹配
    com
    部分即可

  • 正则表达式完全匹配以下示例:

    http://www.google.com
    https://www.google.com
    http://google.com
    https://google.com
    www.google.com
    www.google-blah.com
    
    仅部分匹配:

    ://www.foo.com
    http://sub.domain.com
    
    保存在此处:

    花式图表:

    您可以试试这个:

    ((?:http?)(:\/\/)((?:www\)([\w-]+)(\)(com)

    细分:

    • ((?:http?(:\/\/))?
      -http上的可选匹配,
      https
      加上
      ://
      ,但不单独匹配
      ://

    • (((?:www\)?)
      -在
      www.

    • ([\w-]+)
      -匹配一个或多个[a-zA-Zè]和连字符-这是针对
      google
      部分的

    • (\)
      -在
      谷歌
      com
      之间匹配一个

    • (com)
      -只需匹配
      com
      部分即可

    正则表达式完全匹配以下示例:

    http://www.google.com
    https://www.google.com
    http://google.com
    https://google.com
    www.google.com
    www.google-blah.com
    
    仅部分匹配:

    ://www.foo.com
    http://sub.domain.com
    
    保存在此处:

    花式图表:


    您没有说您使用的是哪种风格的正则表达式。希望是使用负查找的东西,如PCRE:

    结合并扩展前面的答案:

    (?<!["']>|["'])(?:(?:https?:\/\/)|(?<!\/\/)www\.|(?:https?::\/\/)www\.)(?:\w+\.)+\w+(?:\/[a-z0-9-._~:\/?#[\]@!$&'()*+,;=%]*)?
    
    (?
    在这里玩:


    这应该适用于各种各样的URL和域名,并且与以前链接的URL不匹配。

    您没有说您使用的是哪种风格的正则表达式。希望使用负查找功能,如PCRE:

    结合并扩展前面的答案:

    (?<!["']>|["'])(?:(?:https?:\/\/)|(?<!\/\/)www\.|(?:https?::\/\/)www\.)(?:\w+\.)+\w+(?:\/[a-z0-9-._~:\/?#[\]@!$&'()*+,;=%]*)?
    
    (?
    在这里玩:


    这应该适用于各种各样的URL和域名,与以前链接的URL不匹配。

    谢谢你的分解和图表。对我这样的regex neophites非常有用。谢谢你的分解和图表。对我这样的regex neophites非常有帮助。这对我的需要非常有用。但是,它怎么能呢扩展到与以下内容匹配:testmedia.company.com/books/123456/789456/contents.html输入越通用,就越有可能发现误报。请随意使用“www”仔细的部分。这非常适合我的需要。但是,如何将其扩展到与以下内容相匹配:testmedia.company.com/books/123456/789456/contents.htm您输入的内容越通用,就越有可能发现误报。请小心地摆弄“www\”部分。