Javascript 使用自定义规则进行域名验证

Javascript 使用自定义规则进行域名验证,javascript,jquery,regex,Javascript,Jquery,Regex,我正在使用自己的自定义规则处理正则表达式 规则是主机名必须为3-63个字符, 全名必须为256个字符, 除点(.)、连字符(-)外,无特殊字符 我尝试了这个var regx=/^([A-Za-z0-9-]{3,63}?\)+[A-Za-Z]{2,6}$/ 但问题是模式适用于点(.)之后的下一个字符串。我的意思是 例如:“qwerty.abcde.com” 在上面的例子中,“qwerty”应该是3-63个字符,但“abcde”可以是任意数量的字符。我的模式适用于点后的下一个字符串。3-63规则应该

我正在使用自己的自定义规则处理正则表达式

规则是主机名必须为3-63个字符, 全名必须为256个字符, 除点(.)、连字符(-)外,无特殊字符

我尝试了这个
var regx=/^([A-Za-z0-9-]{3,63}?\)+[A-Za-Z]{2,6}$/

但问题是模式适用于点(.)之后的下一个字符串。我的意思是

例如:“qwerty.abcde.com”

在上面的例子中,“qwerty”应该是3-63个字符,但“abcde”可以是任意数量的字符。我的模式适用于点后的下一个字符串。3-63规则应该只适用于“qwerty”而不适用于“abcde”。有人能帮我吗


提前感谢

您可以使用以下正则表达式:

/^(?!.{257})[A-Za-z0-9-]{3,63}\.(?:[A-Za-z0-9-]+\.)*[a-zA-Z]{2,6}$/

详细信息

  • ^
    -字符串的开头
  • (?!.{257})
    -如果字符串包含257个或更多字符(换行字符除外),则会导致匹配失败的负前瞻
  • [A-Za-z0-9-]{3,63}
    -3至63字母数字和
    -
    字符
  • \。
    -一个点
  • (?:[A-Za-z0-9-]+\)*
    -零个或多个
    • [A-Za-z0-9-]+
      -1个或多个字母数字和
      -
      字符
    • \。
      -一个点
  • [a-zA-Z]{2,6}
    -2到6个ASCII字母
  • $
    -字符串结束

因此,负前瞻检查整个字符串长度,
{3,63}
限制量词仅应用于第一个

必须为256或最多为256之前的字符块?我想你的意思是要达到。试试@WiktorStribiżew谢谢你纠正我。最多0-256个字符请尝试我的正则表达式,但我认为这正是您需要的。您甚至可以将
(?![A-Za-z0-9.-]{257})
替换为
(?!{257})
,使其更短。@WiktorStribiżew谢谢您救了我一天。