【发布时间】:2012-08-28 07:14:57
【问题描述】:
我们应用程序中的一个模块会检查用户为 URL 编写的状态更新,以便从 embed.ly 获得预览。在共享以下链接之前,一切似乎都运行良好:
http://sic.sapo.pt/proj_queridajulia/Scripts/VideoPlayer.aspx?videoId={C1BB1496-A37B-44B7-825C-78A9A0A0B9AE}
我复制了我们的正则表达式(不是我写的)和链接到http://gskinner.com/RegExr/,显然正则表达式只匹配等号。正则表达式是:
(^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))
谁能帮我指出错误所在,或者推荐另一个,最好是防弹的 URL 匹配正则表达式?
【问题讨论】:
-
尝试转义等号?即将“=”更改为“\="
-
好的,刚刚解决了。我刚刚在正则表达式中的所有括号组中添加了花括号,将其变成: (^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|文件|prospero|aim|webcal):(([A-Za-z0-9$_.+!*(){},;/?:@&~=-])|%[A-Fa-f0- 9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!(){},;/?:@&~=%- ]))?([A-Za-z0-9$_+!*(){};/?:~-]))
-
应该在发布问题之前尝试过。无论如何,感谢您的输入。
-
有一个比这个怪物更简单的正则表达式... O_o;;
-
既然您找到了自己问题的答案,而不是在评论中发布解决方案,您应该改为post the answer to your own question。然后其他人可以帮助您确定您的答案是否是最佳答案。
标签: regex