我正在使用自己的自定义规则处理正则表达式。
规则是主机名必须是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"。任何人都可以帮助我。
提前致谢
答案 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}
限制量词仅应用于第一个.
之前的字符块。