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

时间:2017-07-21 14:27:08

标签: 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"可以是任何no.of字符。我的模式适用于dot之后的下一个字符串。这个3-63规则应该只适用于" qwerty"不要" abcde"。任何人都可以帮助我。

提前致谢

1 个答案:

答案 0 :(得分:2)

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

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

请参阅regex demo

<强>详情:

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

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