为什么这个URL匹配正则表达式在等号处打破?

时间:2012-09-03 14:25:55

标签: regex

我们的应用程序中的模块检查用户为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$_+!*();/?:~-]))

有人可以帮助我并指出错误所在,或推荐另一个,最好是防弹网址匹配正则表达式吗?

1 个答案:

答案 0 :(得分:0)

好的,我只是试验并开始工作。我将花括号添加到似乎是允许字符组的内容中。最终的正则表达式转变为:

(^ | [\ t \ r \ n])((ftp | http | https | gopher | mailto | news | nntp | telnet | wais | file | prospero | aim | w ebcal):(([A -za-Z0-9 $ _ + *(){}; /:!@&放大器;〜= - ])|%[A-发f0-9] {2}){2}(# ([A-ZA-Z0-9] [A-ZA -Z0-9 $ +(){}; /:@&安培;〜=% - !?]))([A-? ZA-Z0-9 $ + *(){};!/ ?:〜 - ]))

我仍然不知道正则表达式的哪一部分对什么负责。 :/所以如果有人想指出,我会很感激。