有效域名的JavaScript正则表达式

Regular Expression in JavaScript for valid Domain Name

本文关键字:正则表达式 JavaScript 域名 有效      更新时间:2023-09-26

我的JavaScript如下

function DomainValidation() {
        var val = document.getElementById('<%=txtDomainName.ClientID %>').value;
        if (/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:'.[a-zA-Z]{2,})+$/.test(val)) {
            return true;
        }
        else {
            alert("Enter Valid Domain Name");
            return false;
        }
    }

用于检查有效域名。它运行良好,除了当我试图输入只有两个字符的域名时,它是不接受的。由于我不知道使用正则表达式,所以我想知道我应该在哪里进行更改,以便它也接受只有两个字符的域名。

注意:-在将其标记为重复并向我展示之前,我想通知您,上面的脚本运行良好,但我希望它也接受只有两个字符的域名。

只需将{1,61}更改为{0,61},这样就不会排除中间字符。

^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9](?:'.[a-zA-Z]{2,})+$

演示

域名可能很棘手,

要支持t.co等域名,您可以使用以下RegExp

^(?!-)[A-Za-z0-9-]+([-.]{1}[A-z0-9]+)*.[A-Za-z}{2,6}$

因此,您可以将示例域作为第一个参数传递给下面的函数,如果输入是有效域,则它将返回true,否则将返回false。

const isValidDomainName = (supposedDomainName) => {
  return /^(?!-)[A-Za-z0-9-]+(['-'.]{1}[a-z0-9]+)*'.[A-Za-z]{2,6}$/i.test(
    supposedDomainName
  );
};