URL的正则表达式无法正常工作

时间:2017-05-09 20:22:38

标签: asp.net .net regex

我在regexlib上发现了这个正则表达式:

\b([\d\w\.\/\+\-\?\:]*)((ht|f)tp(s|)\:\/\/|[\d\d\d|\d\d]\.[\d\d\d|\d\d]\.|www\.|\.tv|\.ac|\.com|\.edu|\.gov|\.int|\.mil|\.net|\.org|\.biz|\.info|\.name|\.pro|\.museum|\.co)([\d\w\.\/\%\+\-\=\&\?\:\\\"\'\,\|\~\;]*)\b

除非我的URL以符号结尾,否则它可以正常工作。

测试字符串:

http://localhost/MySite/Default.aspx?dl=TzV+1tS9W13zQX0NBLpQWS3gzszG5g59814C2PCXb0RqECKPsJ0n087YRaQ4w9iFIM86q8jBfQL3KoOkh79yUjSAV1XtJC4oL9sxeTmegFfD+TvbT/AZgCHpBgk1qOILqrILnpVKe/JWq0QISestnbOT/bq1KrTmHIlZVYuYC0jX2aCLYw2pOYV04Di43mMZNFwhL97m30XEBF2zFXTqyR8JYN0mOEdB4bpdN7SmTvwOzk6GE1paaKnGA0SEJA6+cm9azUrpl5/HIBmMt9I0CgRr+AlWZRlsZU1c+6ZUrX0rWWjUeeN5JHlNcHk0TGuMiuyEt5hmfAPXpxATe0fDXw==

正则表达式将捕获最后2个等号的URL,但不会包括在内。

我尝试了一些其他的正则表达式无济于事。而且我现在一直试图用这个来玩猴子大约一个小时而没有运气。我只是不太了解正则表达式!

建议?

1 个答案:

答案 0 :(得分:1)

只需在最后添加[=]*

\b([\d\w\.\/\+\-\?\:]*)((ht|f)tp(s|)\:\/\/|[\d\d\d|\d\d]\.[\d\d\d|\d\d]\.|www\.|\.tv|\.ac|\.com|\.edu|\.gov|\.int|\.mil|\.net|\.org|\.biz|\.info|\.name|\.pro|\.museum|\.co)([\d\w\.\/\%\+\-\=\&\?\:\\\"\'\,\|\~\;]*)\b[=]*

我猜这个网址包含基本64位数据,可能以多个=结尾。因此,添加[=]*会告诉正则表达式预期0个或更多相等的符号。