我想做一个正则表达式,但有些东西不适合我,要求如下:
- 最小长度为1
- 最大长度是12
- 前2个符号必须是数字
- 后面的10必须是字母或数字
这是我迄今为止
/^[0-9]{0,2}[a-z][A-Z][0-9]{0,10}$/
你们能告诉我我做错了什么吗?
您的模式^[0-9]{0,2}[a-z][A-Z][0-9]{0,10}$
在开始处匹配0、1或2位数字。
然后它匹配2个字符[a-z][A-Z]
是一个小写字符和一个大写字符a - z,这应该存在于字符串中,并且还使字符串长度至少为2个字符。
您可以将第二个数字设置为可选的,并使用1个字符类用于字母或数字。
的最小是1,长度,最高12。
^(?!d[a-zA-Z])dd?[a-zA-Z0-9]{0,10}$
^
字符串起始(?!d[a-zA-Z])
负向前看,断言不是a- za -z后面的数字dd?
匹配1或2位数字[a-zA-Z0-9]{0,10}
匹配0-10次所列范围$
字符串结束
Regex演示
或者像@Scratte在评论中建议的那样,不带前瞻性的版本,匹配单个数字和可选的第二个数字,后面跟着0-10个列出的范围:
^d(?:d[A-Za-zd]{0,10})?$
Regex演示