下面发布的正则表达式用于获取网址,包括example.com
格式的网址。但是,我希望它只能获取前面有www.
或http
,https
等的网址。换句话说,它应该选择www.example.com
。它不应该拿起example.com
。
((((ht|f)tp(s?))\://)?((www.|[a-zA-Z])([a-zA-Z0-9\-]+\.)([a-zA-Z]{2,8}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*)
答案 0 :(得分:1)
嗯尝试
(((((ht|f)tp(s?))\://)|(www\.))((|[a-zA-Z])([a-zA-Z0-9-]+.)([a-zA-Z]{2,8}))(\:[0-9]+)*(/($|[a-zA-Z0-9.\,\;\?\'\+&%\$#\=~_-]+))*)
编辑: 是的,我没有真正测试那一个。好吧,我也没有测试过这个,但我真的仔细看了一下;)
(((((ht|f)tp(s?))\://)|(www\.))(([a-zA-Z0-9-]+.)?([a-zA-Z0-9]+\.)([a-zA-Z]{2,8}))(\:[0-9]+)*(/($|[a-zA-Z0-9.\,\;\?\'\+&%\$#\=~_-]+))*)
你应该研究一个好的正则表达式测试器。我通常使用Expresso,但那里还有很多其他的。
答案 1 :(得分:1)
使用regexp验证URI格式正确 - 使用RFC 3986中的一个。验证代码是否合理。试图将格式良好和合理的检查结合到一个正则表达式中是很难做到的。请参阅:Need a regex to validating a Url...
答案 2 :(得分:0)
我修改了你的表达式:
((((ht|f)tp(s?))\://)?((www\.)([a-zA-Z0-9-]+\.)([a-zA-Z]{2,8}))(\:[0-9]+)*(/($|[a-zA-Z0-9.\,\;\?\'\+&%\$#\=~_-]+))*)
这是一个非常好的网站,可以在这里检查您的表达:http://gskinner.com/RegExr/
答案 3 :(得分:0)
你走了:
\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.])(?:[^\s()<>]+|\([^\s()<>]+\))+(?:\([^\s()<>]+\)|[^`!()\[\]{};:'".,<>?«»“”‘’\s]))
这是来自Daring Fireball的修订后的自由网址正则表达式。