是否有符合此条件的url正则表达式验证器



我需要一个符合以下条件的url验证器正则表达式:

  • 协议(HTTP、HTTPS(是可选的但是如果给定任何协议,则必须采用正确的格式,即protocol:domain,或protocol://domain.
  • www是可选的
  • 可以使用直接IP地址

因此,根据标准,这些应该通过:

  • http://www.google.com
  • 谷歌
  • abc.def.ghi/hij
  • https:216.239.38.120
  • 216.239.38.120

这些不应该通过:

  • 你好
  • 你好/世界
  • abc://def.ghi
  • ftp:google.com

我找到的最接近的正则表达式来自这里:

^((?:.|n)*?)((http://www.|https://www.|http://|https://)?[a-z0-9]+([-.]{1}[a-z0-9]+)([-A-Z0-9.]+)(/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(?[A-Z0-9+&@#/%=~_|!:‌​,.;]*)?)

但不幸的是,google.com没有通过。它需要有www.作为前缀。你能改进这个正则表达式使www.成为可选的吗?

看起来以下模式符合您的标准:

^(?:https?://(?:www.)?|https:(?://)?)?w+(?:[-.]w+)+(?:/[^/s]+)*$

请参阅regex演示详细信息

  • ^-字符串的开头
  • (?:https?://(?:www.)?|https:(?://)?)?-可选序列:
    • https?://(?:www.)?-httphttps://,然后是可选的www.子字符串
    • |-或
    • https:(?://)?-https:,然后是可选的//字符串
  • w+-一个或多个单词字符
  • (?:[-.]w+)+-.-的一个或多个序列,后跟一个或更多单词字符
  • (?:/[^/s]+)*-/的可选序列,然后是除/和空白之外的一个或多个字符
  • $—字符串结束

相关内容

  • 没有找到相关文章

最新更新