【问题标题】:cz ccTLD domain regex validationcz ccTLD 域正则表达式验证
【发布时间】:2012-06-29 20:56:03
【问题描述】:

我有这个正则表达式/^([a-z0-9]([a-z0-9-]*[a-z0-9])*){1,60}\.cz$/i

规则:

  1. 域名只能包含字符 [a-z,0-9,-]
  2. 域名最大长度不超过 63 个字符
  3. 域名不得以“-”字符开头或结尾
  4. 域名不得连续包含两个字符“-”

我需要用最后一条规则(javascript)完成这个正则表达式。

【问题讨论】:

  • 你确定.cz之前的部分没有63个长度限制吗?那么总长度限制为66。我也认为捷克域名不能短到.cz之前的一个字符,所以你应该添加一个最小长度限制......

标签: javascript regex


【解决方案1】:

使用正则表达式/^(?!.{64})[a-z0-9]+(\-[a-z0-9]+)*\.cz$/i

【讨论】:

  • @PatrikVotoček - 设置最低限制(不允许使用一个字母 .cz 域名),在 ^ 后面添加 (?=.{5})
【解决方案2】:

域名不能连续包含两个字符“-”

一种简单的方法就是在^ 之后的表达式中添加一个negative lookahead condition,例如(?!.*--)

【讨论】:

  • Qtax,我希望你能给出更好的答案,因为通常你是正则表达式中最好的。
  • @Ωmega 谢谢,但你已经有了我想建议的答案,所以没必要。 :-) 我本来打算删除这个的,但后来有人投票了,所以一定在某种程度上很有用。