Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery验证插件正确验证URL和TLD_Javascript_Regex_Jquery Validate - Fatal编程技术网

Javascript 使用jQuery验证插件正确验证URL和TLD

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("^[

我正在尝试使用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("^[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对象,只需使用文字: