我正在使用自己的自定义规则处理正则表达式。
规则是主机名必须为 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}$/
请参阅regex demo
详细信息:
^
- 字符串开头(?!.{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}
限制量词仅应用于第一个 之前的字符 block 。
.
关于javascript - 使用自定义规则进行域名验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45240200/