【问题标题】:Validate URL with javascript and php使用 javascript 和 php 验证 URL
【发布时间】:2009-06-16 09:02:30
【问题描述】:

我只想验证 url,对于以下两种格式 http://www.XYZ.com 和 www.XYZ.com 我也想要这个在 Javascript 和 PHP 中的验证脚本。 提前致谢。

【问题讨论】:

    标签: php javascript


    【解决方案1】:

    正则表达式就像一个冠军。

    你可以自己写一个,这里有一个简单的例子:

    (https?://)?.+$
    

    在更严格的验证方面,我通过谷歌搜索发现了一些更特别的东西:

    ^(https?://)?(([0-9a-z_!'().&=$%-]: )?[0-9a-z_!'().&=$%-]@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!'()-]\.)([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((/?)|(/[0-9a-z_!*'().;?:@&=$,%#-])/?)$
    

    来源:http://www.geekzilla.co.uk/view2D3B0109-C1B2-4B4E-BFFD-E8088CBC85FD.htm (显然测试复制和粘贴的正则表达式,就像使用任何复制粘贴的代码一样)

    如果你不知道如何在 PHP 中使用正则表达式,那么简单如下:

    $valid = preg_match($pattern, $urlOrStringToValidate);
    

    其中 $pattern = "/(https?://)?.+/" 或类似的东西,在 / 和 / 之间

    Javascript 在 String 类型上有一个名为 match 的对象方法。

    var urlString = "http://www.XYZ.com";
    var isValidURL = urlString.match(/(https?:\/\/)?.+/);
    

    【讨论】:

    • 我忘了提到的另一件事,正则表达式只会验证 url 的格式是否正确。您实际上可以通过向 url 发送 AJAX 请求等操作来查看这些 url 是否有效(Jquery: $.ajax({url: urlToTest, error: function(){ alert("not valid url"); }}) ; 同样,您可以 curl 或执行 gethostbyname (us2.php.net/manual/en/function.gethostbyname.php) 进行测试。但是!我测试 url 实际有效性的经验非常烦人。假设服务器响应时间太长,因此 ajax 失败,或者主机名是一个 IP 地址...真的很难处理。
    • 以上条件对以下两个条件都有效? www.xyz.com 和xyz.com
    【解决方案2】:

    您最好使用正则表达式来执行此操作。像这样的:

    ^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?
    

    您可以在 PHP 中使用 preg_match 函数和在 JavaScript 中使用 match() 函数来使用正则表达式。

    例如(Javascript)。

    function validateUrl(url)
    {
        var pattern = '^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?';
    
        if(url.match(pattern))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    

    【讨论】:

    • 以上条件对以下两个条件都有效? www.xyz.com 和xyz.com
    • 我相信。我没有正确测试表达式。你只需要在谷歌上搜索一个适合你需求的并应用它。要么这样,要么写出完全符合你需要的表达式。
    【解决方案3】:

    使用Jquery validator

    【讨论】:

      猜你喜欢
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 2012-09-08
      • 2010-11-21
      • 2013-09-01
      相关资源
      最近更新 更多