我想检查包含网址的字符串的匹配项,例如:
http://www.something.com
www.something.com
something.com
我有这个正则表达式(.Net样式)来匹配网址:
((http|ftp|https|www)://)?(\w+?\.\w+)+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?
它适用于3个以上的网址,但不幸的是它也符合这个:
35.000
如何修复正则表达式,使其不匹配35.000?
答案 0 :(得分:0)
这是一个非常方便的正则表达式,它匹配URL并将协议,主机,路径,查询和片段分别放入组1,2,3,4和5中。它还匹配主机部分中的IP地址和主机名。除了主持人之外的所有东西都是可选的。
(?:(https?|ftp)://)?(\d{1,3}(?:\.\d{1,3}){3}|(?:\w+\.)*[a-z]+)(/[^?#\s]*)(\?[^#\s]*)?(#[^\s]*)?
正如您所看到的,它是非常宽松。它只是检查整体结构而不实际验证URL的部分(编码等)。但它会匹配任何正确的URL,所以它应该足够好。如果使用Javascript,只需转义/
斜杠,它应该可以正常工作。
试试here。