Javascript URL验证不应接受开头的空字符串
我正在尝试验证URL。它的开头和中间不应包含空格。如果我们没有输入完整的URL,它会发出错误警报。例如,如果输入是Javascript URL验证不应接受开头的空字符串,javascript,jquery,regex,Javascript,Jquery,Regex,我正在尝试验证URL。它的开头和中间不应包含空格。如果我们没有输入完整的URL,它会发出错误警报。例如,如果输入是www.google,它应该抛出以下异常: '请输入完整的URL' 有人能帮我解决这个问题吗 谢谢您可以使用该插件来确保有效的URL。这里有一些示例代码取自 使“字段”成为必填项和url。 必需,URL: //仅用于演示,避免表单提交 jQuery.validator.setDefaults({ 是的, 成功:“有效” }); $(“#myform”)。验证({ 规则:{ 字段:
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\.
(2)://www.
启动非捕获组(?:
与域名的“名称”部分相匹配,仅字母和数字可能在开头后有一个连字符[a-z0-9]-?
-
关闭非捕获组,可能出现多个)+[^-\.]
以匹配URL,如[a-z0-9]-?
,并且它不应以点http://www.some-domain-name.com
或连字符
结尾,因此为-
部分[^-\.]
匹配一个点\.
是一组[a-z]{2,15}
到2
,仅字母,与域名的gTLD[]部分匹配15
以一组非捕获的2个字母结束正则表达式,仅代表ccTLD[]部分,该部分可能存在或不存在,这就是为什么我们在组后有(?:\.[a-z]{2})$
?
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})?$