如何修改此正则表达式以匹配包含@字符的URL

时间:2014-04-15 09:50:11

标签: javascript regex

我正在使用以下正则表达式使用javascript在文本字符串中查找链接。

/(([a-z]+:\/\/)?(([a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel|local|internal))(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-zA-Z0-9!$&'()*+.=-_~:@/?]*)?)(\s+|$)/gi

它对我有好处,看起来非常强大。但是我最近注意到(也许是正确的)它与任何包含@字符的网址都不匹配。

虽然这些并不常见,但Flickr使用它们,我希望支持匹配这些链接。

我想要匹配的示例Flickr网址:

https://www.flickr.com/photos/47574723@N03/13849559654/in/explore-2014-04-14

所以问题是,如何修改上面的正则表达式以使其能够正确匹配上面的url?

提前致谢

1 个答案:

答案 0 :(得分:1)

编辑它以添加一个@

(([a-z]+:\/\/)?(([a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel|local|internal))(:[0-9]{1,5})?(\/[a-z0-9_@\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-zA-Z0-9!$&'()*+.=-_~:@\/?]*)?)(\s+|$)