使用 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)$

Demo here.

您可以通过在 us 之后添加 |<tld> 来添加更多有效的 TLD。