正确匹配URL的正则表达式

原文地址为: 正确匹配URL的正则表达式

网上流传着多种匹配URL的正则表达式版本,但我经过试验,最好用的还是从stackoverflow上查到的:

(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]

IP地址、前后有汉字、带参数的,都是OK的。

正确匹配URL的正则表达式_第1张图片

 

另外几个有问题的版本:

摘自微软MSDN:

(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?

带参数的匹配有问题。

正确匹配URL的正则表达式_第2张图片

百度知道中有人回答的:

http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

有严重的汉字问题。

正确匹配URL的正则表达式_第3张图片

 

另外,如果只是想匹配URL中的域名部分,则可以用这个:

((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:ww‌​w.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?‌​(?:[\w]*))?)

正确匹配URL的正则表达式_第4张图片

 

 

看不懂正则表达式?用regulex试试,可以把正则表达式可视化!

参考:精通正则表达式的 12 个有用资源


转载请注明本文地址: 正确匹配URL的正则表达式

你可能感兴趣的:(正确匹配URL的正则表达式)