我想出了以下正则表达式来匹配有效的网址。
^(?:(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.com
或localhost
或google.com
但不验证http://stackoverflow.com/questions/ask
答案 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