我有大量用户提交的内容。它是 HTML,并且可能包含 URL。其中一些将是<a>
已经(如果用户很好),但有时用户很懒,只输入 www.something.com 或最多http://www.something.com.
我找不到合适的正则表达式来捕获 URL,但忽略紧邻双引号或“>”右侧的 URL。有人有吗?
扬·戈伊瓦茨 (Jan Goyvaerts),正则表达式好友, has 写了回复Jeff Atwood 的博客解决了 Jeff 遇到的问题并提供了一个很好的解决方案。
\b(?:(?:https?|ftp|file)://|www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]
为了忽略紧邻“或>”的匹配,您可以添加(?<![">])
到正则表达式的开头,所以你得到
(?<![">])\b(?:(?:https?|ftp|file)://|www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]
这将匹配完整地址(http://...) 以及以 www 开头的地址。或 ftp。 - 像 ars.userfriend.org 这样的地址你运气不好......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)