我对正则表达式不好。真糟糕我以为我很体面,但没有。我很糟糕。
由于这一点,我们如何让{1,61}量词对整个前一组产生影响?
^((xn-|[a-zA-Z0-9]+)((-[a-zA-Z0-9]+)+)?){1,61}(\.[a-zA-Z]{2,})?$
这是RegExr。
顺便说一下,这是一个域名模式。
答案 0 :(得分:2)
您的表达无效,因为{1-61}
适用于之前的群组,该群组本身包含1个或更多字符。
以下是使用@Casimir评论的积极前瞻的答案:
^(?=.{1,61}$)((xn-|[a-zA-Z0-9]+)((-[a-zA-Z0-9]+)+)?)(\.[a-zA-Z]{2,})?$
请注意,如果您尝试匹配域名,那么您应该在名称中匹配a max of 63 characters,而不是包括dot-tld。上面的表达式将匹配整个名称的最大值61,包括dot-tld,因此它将禁止使用有效名称。也许这更接近你想要的东西:
^(?=[^\.]{1,63}\.)(xn-|[a-zA-Z0-9]+)((-[a-zA-Z0-9]+)+)?(\.[a-zA-Z]{2,})?$