【问题标题】:Javascript URL validation regexJavascript URL 验证正则表达式
【发布时间】:2013-08-24 05:41:08
【问题描述】:

我有以下 url 验证正则表达式:

/(ftp|https?)://[^"]+$/

这是来自参考: Regular expression for URL validation (in JavaScript)

这很好用,包括http://localhost:8080 之类的情况,但它也验证了以下我不想要的情况。上面的正则表达式不应该通过下面的网址

 1. http://www.example..com
 2. http://.com
 3. http://.
 4. http://www.example. 

请作为正则表达式中的菜鸟提供帮助

第二个问题,虽然与问题无关,但正则表达式是,当我针对正则表达式 /^[a-z]+$/i 验证 null 和 undefined 时,我得到了正确的结果。这是默认行为还是我在这里遗漏了什么?

【问题讨论】:

标签: javascript regex


【解决方案1】:

试试这个

function is_valid_url(url)
{
     return url.match(/^(ht|f)tps?:\/\/[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/);
}

在您想要网站验证的任何地方调用is_valid_url(YOUR_WEBSITE_URL) 函数。

【讨论】:

  • 好的,我现在检查一下
  • {2,4} 并没有涵盖大量的*域名,尤其是刚刚出现的所有新*域名。请参阅 data.iana.org/TLD/tlds-alpha-by-domain.txt 使用 {2,22} 将覆盖大部分。
  • 它确实验证了 \ 和 ^ !
【解决方案2】:

试试这个..

<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://jqueryvalidation.org/files/dist/jquery.validate.min.js"></script>
<script src="http://jqueryvalidation.org/files/dist/additional-methods.min.js"></script>
<script>
// just for the demos, avoids form submit
jQuery.validator.setDefaults({
  debug: true,
  success: "valid"
});
$( "#myform" ).validate({
  rules: {
    field: {
      required: true,
      url: true
    }
  }
});
</script>

【讨论】:

    【解决方案3】:

    我为 javascript 构建了 this 正则表达式 IP 和 DNS 验证。

    /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?((([a-z0-9])*[:]){1}|(([a-z0-9])*[.]){1}|(([0-9]){1,3}([.]|[:])){3}(([0-9]){1,3}[:]){1})([a-z]{2,5}|[0-9]{1,5})([.]([a-z0-9]){1,3})?(\/.*)?$/
    

    【讨论】: