【问题标题】:validate url with regular expressions [duplicate]使用正则表达式验证 url [重复]
【发布时间】:2013-05-02 06:58:15
【问题描述】:

我已经通过所有可能的方式来使用正则表达式进行 url 验证, 但我没有得到任何.. 我需要的是网址可以像

google.com
http://google.com
https://google.com
http://www.google.com
https://www.google.com

但如果只是google,则不应允许

最后,.extensions 是强制性的

我试过这个/^[a-z0-9-]+(.[a-z0-9-]*)(.[a-z0-9-]*)$/

在这种情况下谁能帮助我..

【问题讨论】:

    标签: php regex


    【解决方案1】:

    您可以使用filter_varFILTER_VALIDATE_URL 直接验证网址

    if (filter_var($url, FILTER_VALIDATE_URL) !== false)
    

    编辑

    使用正则表达式

    $subject = "http://www.google.com";
    $pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
    preg_match($pattern, $subject, $matches);
    print_r($matches);
    

    输出

    Array ( [0] => http://www.google.com )
    

    Codepad

    【讨论】:

    • 我正在使用将存储在我的数据库中的正则表达式进行验证,我不能使用这些条件..
    • 为什么不呢,在插入数据库之前使用它。
    • @Nagendra 查看正则表达式的编辑答案。
    • 不错,但它不会验证某些协议,例如,如果你想验证流 URL,你应该将这部分 (?:https?|ftp) 更改为 (?:https?|ftp|rtmp|rtsp|mms) 可能我错过了其他人
    【解决方案2】:

    试试这个表达式

    /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi
    

    它会接受你上面提到的所有情况

    【讨论】:

    • 我不熟悉正则表达式。可以给我php代码吗?
    • 使用这个正则表达式已经有一段时间了,然后遇到了一个 .financial 网站....所以顶级域的 {2,4} 应该是 {2,9}
    【解决方案3】:
    ((https?:|[^.])\/\/w{0,3}[.]?google.[a-z]{2,4})|google.[a-z]{2,4}
    

    它不是最漂亮的,但它确实有效。我已经检查过http://regexpal.com/

    【讨论】:

    • 让我提出几个改进。 1 你可以使用https? 这将匹配http 或https,2 你不需要将w 放在字符类中,3 {0,1} 表示? 所以你可以使它成为\.?。虽然这个正则表达式只适用于这个例子,但如果我有 http://translate.google.comhttp://google.fr 怎么办?
    • 是的,您对一些改进是正确的。他想要它作为他给出的例子,所以我为这些例子写了它。如果他想要 domain 它可以很容易地添加。我已经回答了他想要什么或我认为他想要什么:)
    【解决方案4】:

    如果你想创建非常好的域验证器,你应该获取域 tlds 的数据库并为它们进行验证。

    Mozilla 有这个列表:http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1

    这是https://github.com/nmmmnu/TLDExtractor的python模块

    【讨论】:

      【解决方案5】:

      你可以试试下面的

      (^(http|https)://)?(www\.)?\w+\.com
      

      【讨论】:

      猜你喜欢
      • 2011-05-11
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 2011-09-21
      • 2011-03-07
      • 2021-02-24
      相关资源
      最近更新 更多