使用 jQuery 验证插件正确验证 URL 和 TLD
Issue validating URL and TLD correctly with jQuery validate plugin
我正在尝试使用 jQuery 验证器验证 URL,但我使用的正则表达式错误地验证了没有 TLD 的带有子域(例如:subdomain.domain
)的域是真的。
我有这个,它验证了一个子域:
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。
我正在尝试使用 jQuery 验证器验证 URL,但我使用的正则表达式错误地验证了没有 TLD 的带有子域(例如:subdomain.domain
)的域是真的。
我有这个,它验证了一个子域:
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。