Javascript 使用jQuery验证插件正确验证URL和TLD
我正在尝试使用jQuery validator验证URL,但我使用的正则表达式错误地验证了具有子域的域(例如:Javascript 使用jQuery验证插件正确验证URL和TLD,javascript,regex,jquery-validate,Javascript,Regex,Jquery Validate,我正在尝试使用jQuery validator验证URL,但我使用的正则表达式错误地验证了具有子域的域(例如:subdomain.domain),而没有TLD为true 我有一个验证子域的方法: jQuery.validator.addMethod("domainChk", function (value, element, params) { if (this.optional(element)) return true; var regExp = new RegExp("^[
subdomain.domain
),而没有TLD为true
我有一个验证子域的方法:
jQuery.validator.addMethod("domainChk", function (value, element, params) {
if (this.optional(element)) return true;
var regExp = new RegExp("^[a-zA-Z0-9][a-zA-Z0-9.-]*[a-zA-Z0-9]$");
return regExp.test(value);
}, "Valid hostname required for player code");
它也没有正确验证TLD。因此,我可以输入subdomain.domain.aaa123
并进行验证。它还验证少于2个字符的TLD
这只需要对美国观众进行验证(因此,加拿大的.ca或类似文件不需要对进行验证)尝试:^(?:https?:\/\/)(?:www\)(?:\w+?\){2}(?:com | US)$
您可以通过在
us
之后添加|
来添加更多有效的TLD无点验证TLD。现在有许多新的gTLD正在添加。只需验证一般结构,让DNS完成其余工作。这是我当前的实现:我需要能够接受www
、http://
和https://
,但它没有通过验证。我已经更新了我的答案。它将以http://www.subdomain.domain.tld
(其中http和www是可选的)。这就是你想要的吗?我将我的验证固定为:^(https:\/\/www\\\\/www\\.\www\.\http:\/\/www\.)([a-zA-Z0-9].[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])+([a-zA-Z0-9].[a-zA-Z0-9\-]*[a-zA-Z0-9].
,但是现在,如果URL前面没有www
,我就无法验证它,而且它也不会占用子域。@Matt在我的回答中使用正则表达式。它是否按照您的预期工作?@Matt在正则表达式中使用/
而不是“
。除非在正则表达式中对反斜杠进行双重转义,否则它在引号中不会工作。也无需创建RegExp对象,只需使用文字: