量化器不起作用

Quantifier not working

本文关键字:不起作用 量化      更新时间:2023-09-26

我不擅长正则表达式。只是很糟糕。我以为我还不错,但不是。我只是不好。

说到这里,我们如何使{1,61}量词在前面的整个组中起作用?

^((xn-|[a-zA-Z0-9]+)((-[a-zA-Z0-9]+)+)?){1,61}('.[a-zA-Z]{2,})?$

这是RegExr。

顺便说一下,这是一种域名模式。

您的表达式不起作用,因为{1-61}应用于上一个组,该组本身由1个或多个字符组成。

以下是@Casimir:评论的积极展望的答案

^(?=.{1,61}$)((xn-|[a-zA-Z0-9]+)((-[a-zA-Z0-9]+)+)?)('.[a-zA-Z]{2,})?$

请注意,如果您试图匹配域名,那么您实际上应该匹配名称中最多63个字符,不包括点tld。上面的表达式将匹配整个名称的max61,包括点tld,因此它将禁止有效名称。也许这更接近你想要的:

^(?=[^'.]{1,63}'.)(xn-|[a-zA-Z0-9]+)((-[a-zA-Z0-9]+)+)?('.[a-zA-Z]{2,})?$