如何编写正则表达式匹配首个零后仅含零的10位大写字母数字串
正确正则表达式
你可以使用以下正则满足需求:
^(?=[A-Z0-9]{10}$)[A-Z1-9]*0*$
规则解释
- 开头的
^和结尾的$限定匹配整个字符串,避免部分匹配 (?=[A-Z0-9]{10}$)是正向预查,确保字符串总长度为10,且仅由大写英文字母和数字组成[A-Z1-9]*匹配第一个0出现之前的所有字符,只能是大写字母或者1-9的数字,长度可以为0(对应第一位就是0的场景)0*匹配第一个0出现之后的所有字符,只能是0,长度可以为0(对应整个字符串没有0的场景)
匹配验证
对应你给出的用例,匹配结果如下:
ABC1000000- valid3212130000- valid0000000000- validABC1000100- invalid0001000000- invalid
兼容写法(不需要预查支持)
如果你的运行环境不支持正则预查,可以用以下等价写法:
^(?:[A-Z1-9]{10}|[A-Z1-9]{0,9}0{1,10})$
这个写法直接拆分了两种合法场景:要么10位全是非0的合法字符,要么前面0-9位非0合法字符加后面1-10位0,总长度固定为10。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

