【问题标题】:Regex for url validation [duplicate]用于 url 验证的正则表达式 [重复]
【发布时间】:2011-05-16 21:17:33
【问题描述】:

可能重复:
PHP validation/regex for URL

嗨,

在我的表单中,我有一个 url 字段。用户我输入了所有类型的网址。我使用以下正则表达式来验证 url:

/^(https?):\/\/(?:[A-Z0-9-]+.)+[A-Z]{2,6}([\/?].+)?$/i

但是这个正则表达式处理一些无效的 url,例如以下

http://partners.webmasterplan.com/click.asp?ref=537448&site=5643&type=b479&bnb=479

任何想法如何改进正则表达式?

【问题讨论】:

标签: php regex validation


【解决方案1】:

至于你的正则表达式,第一个句点需要像这样转义

/^(https?):\/\/(?:[A-Z0-9-]+\.)+[A-Z]{2,6}([\/?].+)?$/i

【讨论】:

    【解决方案2】:

    这个问题之前已经解决过很多次了。例如,请参阅here

    【讨论】:

      【解决方案3】:

      为什么不用filter_var

      filter_var('example.com', FILTER_VALIDATE_URL))
      

      不要在不需要的地方使用正则表达式

      【讨论】:

      • 这是什么功能,没听说过。我想使用正则表达式,因为我正在使用 zend 框架,但我不确定如何应用它
      • 请注意,filter_varFILTER_VALIDATE_URL 存在一些缺陷,可能仍然需要手动验证(至少这是我听说的)。
      • 这将允许http://??/等无效URL。
      猜你喜欢
      • 1970-01-01
      • 2013-05-02
      • 2011-05-11
      • 2017-07-25
      • 2012-02-22
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      相关资源
      最近更新 更多