包含一个集合的1到3个成员但其中一个成员不能单独存在的正则表达式

Regular Expression that contains 1 to 3 members of a set but one of those members cannot be by itself

本文关键字:成员 一个 单独 正则表达式 存在 不能 集合 3个 包含一      更新时间:2023-09-26

这是我当前的正则表达式:

(['d'*]{1,3}[A-Z'*]{0,3})

我的问题是第一部分['d'*]{1,3},我需要它最多匹配3个数字和至少一个数字,我也需要接受通配符输入-但通配符(*)不能独立,这是目前在某些情况下允许的。

所以我需要匹配的第一部分:

123
12*
*23
1*
*2
1*3

但不仅仅是:

*

使用正向环视断言。

^(?!'*+$)['d'*]{1,3}[A-Z'*]{0,3}$

(?!'*+$)否定前瞻,它断言要匹配的字符串不会只包含*的s。

^(?=.*'d)['d'*]{1,3}[A-Z'*]{0,3}$

(?=.*'d)正向前瞻,它断言要匹配的字符串必须包含至少一个数字字符。

演示

您可以这样做:

((['d'*]{2,3}|'d)[A-Z'*]{0,3})

一种基本方法:(我假设只允许一个*

((?:'d(?:['d*]?'d?|'d'*?)|'*'d'd?)[A-Z*]{0,3})

请注意,此模式必须锚定到某个对象。