Regex 为什么匹配正则表达式的URL在等号处断开?

Regex 为什么匹配正则表达式的URL在等号处断开?,regex,Regex,我们应用程序中的一个模块检查用户编写的URL状态更新,以便从embed.ly获得预览。在共享以下链接之前,一切似乎都正常工作: {C1BB1496-A37B-44B7-825C-78A9A0B9AE} 我复制了我们的正则表达式(不是我写的)和链接到,显然正则表达式只匹配到等号。正则表达式是: (^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|webcal):(([A-Za-z0-

我们应用程序中的一个模块检查用户编写的URL状态更新,以便从embed.ly获得预览。在共享以下链接之前,一切似乎都正常工作:

{C1BB1496-A37B-44B7-825C-78A9A0B9AE}

我复制了我们的正则表达式(不是我写的)和链接到,显然正则表达式只匹配到等号。正则表达式是:

(^|[ \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匹配正则表达式的方法吗?

好的,我只是尝试了一下,并让它发挥了作用。我在似乎是允许的字符组中添加了大括号。最后的正则表达式变成了这样:

(^ http | https | gopher | mailto | news | nntp | telnet | wais | file | prospero | aim | w‌​ebcal:([A-Za-z0-9$.+!*(){},;/?:@&~=-])){2}(#)([A-Za-z0-9][A-Za‌​-Z0-9$.+!(){};/?:@&~=%-])?([A-Za-Z0-9$+!*(){};/?:~-]))


我仍然不知道正则表达式的哪个部分负责什么。:/因此,如果有人想指出,我将不胜感激。

是否试图避开等号?i、 e将“=”更改为“\=”好的,刚刚解决了它。我只是给regex中的所有父母子女的所有群体加了一个卷曲大括号,把它变成:(^ |[t\r\n\r\r\n)我只是给regex中的所有父母子女的所有群体加了一个卷曲大括号,把它变成:((ftp | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http | http |[A-Za-z0-9$!*({};/?:@&=%-]))([A-Za-z0-9$!*({};/?:-]))在发布问题之前应该尝试一下。无论如何,谢谢你的输入dutt。一定有比这个怪物更简单的正则表达式。。。欧欧;;既然您找到了自己问题的答案,而不是在评论中发布解决方案,那么您应该这样做。然后其他人可以帮助你决定你的答案是否是最好的。