我正在使用以下正则表达式使用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?
提前致谢
答案 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+|$)