Javascript URL验证不应接受开头的空字符串

Javascript URL验证不应接受开头的空字符串,javascript,jquery,regex,Javascript,Jquery,Regex,我正在尝试验证URL。它的开头和中间不应包含空格。如果我们没有输入完整的URL,它会发出错误警报。例如,如果输入是www.google,它应该抛出以下异常: '请输入完整的URL' 有人能帮我解决这个问题吗 谢谢您可以使用该插件来确保有效的URL。这里有一些示例代码取自 使“字段”成为必填项和url。 必需,URL: //仅用于演示,避免表单提交 jQuery.validator.setDefaults({ 是的, 成功:“有效” }); $(“#myform”)。验证({ 规则:{ 字段:

我正在尝试验证URL。它的开头和中间不应包含空格。如果我们没有输入完整的URL,它会发出错误警报。例如,如果输入是
www.google
,它应该抛出以下异常:

'请输入完整的URL'

有人能帮我解决这个问题吗

谢谢

您可以使用该插件来确保有效的URL。这里有一些示例代码取自


使“字段”成为必填项和url。
必需,URL:

//仅用于演示,避免表单提交 jQuery.validator.setDefaults({ 是的, 成功:“有效” }); $(“#myform”)。验证({ 规则:{ 字段:{ 要求:正确, 网址:true } } });
您可以使用正则表达式将输入的字符串与模式匹配。根据您对url模式的说明,以下示例可能会做到这一点:

var regex=/^(http)s?(:\/\/www)(\.\w{2,}){2,3}$/;
$(“#检查”)。在(“单击”上,函数(e){
e、 预防默认值();
var url=$(“#url”).val();
if(正则表达式测试(url)){
警报(“URL已完成”);
}否则{
警报(“请输入完整的url”);
}
});//#选中click()

验证
我希望
http
https
放在第一位,然后是
www
,然后是两个或三个组件,后面是它,开头不应该有空格

正则表达式:1

  • ^https?
    http
    https
    开头,因此在
    s
    字母后加上
  • :\/\/www\.
    匹配
    ://www.
    2
  • (?:
    启动非捕获组
  • [a-z0-9]-?
    与域名的“名称”部分相匹配,仅字母和数字可能在开头后有一个连字符
    -
  • )+[^-\.]
    关闭非捕获组,可能出现多个
    [a-z0-9]-?
    以匹配URL,如
    http://www.some-domain-name.com
    ,并且它不应以点
    或连字符
    -
    结尾,因此为
    [^-\.]
    部分
  • \.
    匹配一个点
  • [a-z]{2,15}
    是一组
    2
    15
    ,仅字母,与域名的gTLD[]部分匹配
  • (?:\.[a-z]{2})$
    以一组非捕获的2个字母结束正则表达式,仅代表ccTLD[]部分,该部分可能存在或不存在,这就是为什么我们在组后有
代码:

var domains=document.querySelectorAll(“#domains list li”),
$URLregX=/^https?:\/\/www\(?:[a-z0-9]-?)+[^-\.]\.[a-z]{2,15}(?:\.[a-z]{2})$/i;
对于(var i=0,ln=domains.length;i
*{填充:0;字体系列:verdana,无衬线;字体大小:1em;}
li{填充:10px;边框底部:1px点#AAA;}
李:第n个孩子(偶数){背景色:#EEE;}
li span{颜色:白色;填充:3px 5px;边框半径:3px;字体大小:12px;}
.matched{背景色:绿色;}
.不匹配{背景色:深色;颜色:白色;}

  • http://www.google.co.sa
  • http://WWW.EXAMPLE.NET
  • http://www.google.com
  • http://www.some-site.engineering
  • https://www.google.com
  • http://www.efg-cba.asdfgh
  • http://maps.google.com
  • httphttps://www.example.net
  • http://abc.site-name.com
  • https://some-sub-domain.exam-ple.musem.uk
  • http://google.com
  • http://sub-domain.example-site.engineering
  • http://test-www.mi-creativity.com
  • https://google.co.in
  • www.google
  • www.google.com
  • mail.google.com
  • http://www.google
  • //www.google
  • :google.com
  • http://www..google.co.sa
  • http://www.google..co.uk
  • http://www.google.co..uk
  • htt:google.com
  • http:google.com
  • http://google.com
  • http://www.google.com
  • http://www.go ogle.com
  • http://www.google.c 嗯
  • http://www.-google.com
  • http://www.g--oogle.com
  • http://www.google-.com
  • http://www.-google.com
  • http://www.g--oogle.com
  • http://www.example.c

  • 你的代码在哪里可能复制?什么不起作用?你期望什么?你认为完整的URL?为什么代码< > GoGoLe< /Cuth>不完整?因为它缺少协议前缀(<代码> http://< /COD>)或者因为
    .google
    不是ICANN批准的TLD?@MohitBhardwaj完整的url类似于,如果我输入。它应该用输入完整url提醒我Thankskadillak我没有使用引导验证程序,谢谢你的回答为什么要在别人已经验证url的情况下进行所有尝试验证的工作?还有不是引导验证程序。这是一个独立的jQuery插件。是的,我也希望如此,但我不应该使用第三方库,谢谢你的建议,regex遗漏了一个lot@Mi-创造力是的,你是对的。添加了一些改进,但现在可以看到它遗漏了一些东西。感谢你指出:)
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Makes "field" required and a url.</title>
    <link rel="stylesheet" href="https://jqueryvalidation.org/files/demo/site-demos.css">
    
    
    
    </head>
    <body>
    <form id="myform">
    <label for="field">Required, URL: </label>
    <input class="left" id="field" name="field">
    <br/>
    <input type="submit" value="Validate!">
    </form>
    <script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
    <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
    <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/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>
    </body>
    </html>
    
    ^https?:\/\/www\.(?:[a-z0-9]-?)+[^-\.]\.[a-z]{2,15}(?:\.[a-z]{2})?$