如何在正则表达式中捕获.com之后的URL部分?

时间:2013-12-09 07:10:38

标签: regex

我想出了以下正则表达式来匹配有效的网址。

^(?:(ftp|http|https):\/\/)?(?:[a-zA-Z]+\.){0,1}(?:[a-zA-Z0-9][a-zA-Z0-9-]+){1}(?:\.[a-zA-Z]{2,6})?$

哪些匹配(ftp | http | https)可选,没有.com或其他任何内容的域名,但我也希望捕获.com之后的所有内容。

以上正则表达式验证http://stackoverflow.comlocalhostgoogle.com但不验证http://stackoverflow.com/questions/ask

1 个答案:

答案 0 :(得分:1)

要匹配剩余的URI,您最后可以添加\S*

^(?:(ftp|http|https):\/\/)?(?:[a-zA-Z]+\.){0,1}(?:[a-zA-Z0-9][a-zA-Z0-9-]+){1}(?:\.[a-zA-Z]{2,6})?(\/|\/\w\S*)?$

但要解析URL的各种组件,最好使用built-in parse_url function.

替代验证本地网址:

^(?:(ftp|http|https):\/\/)?(?:[a-zA-Z0-9.]+\.){0,1}(?:[a-zA-Z0-9][a-zA-Z0-9-]+){1}(?:\.[a-zA-Z]{2,6})?(\/|\/[\w#!:.?+=&%@!\-\/]*)?$

例如:172.18.11.178

演示: http://regex101.com/r/vV0sB5