求匹配非0开头且最多10位数字的正则表达式
解决非0开头、最多10位数字的正则匹配问题
你之前写的正则存在的问题:
^([1-9]+)([0-9]+){1,10}$:语法和长度控制双错。[1-9]+要求首位至少1位非0数,[0-9]+{1,10}是错误写法,就算忽略语法问题,前面至少1位加后面至少1位重复1-10次,总长度最少2位、最多11位,完全不符合最多10位的要求。^(([1-9])+([0-9])+{1,10})$:和第一个问题类似,([0-9])+{1,10}语法错误,长度控制彻底失效。^([1-9]+)([0-9]*){1,10}$:[0-9]*{1,10}是重复「任意位数数字(包括0位)」1-10次,相当于可以无限追加数字,比如1后面连加10组123,长度直接超标,起不到限制10位的作用。
正确的正则表达式:
^[1-9]\d{0,9}$
规则解释:
^锁定字符串开头,确保前面无多余字符[1-9]首位必须是1-9的非0数字,杜绝以0开头的情况\d{0,9}后面可跟0到9位数字(\d等价于[0-9]),总长度范围1到10位,刚好符合「最多10位」要求$锁定字符串结尾,确保后面无多余字符
验证示例:
- 匹配项(符合要求):
1、123、9876543210(刚好10位) - 排除项(不符合要求):
0、0123(以0开头)、12345678901(11位)、12a3(含非数字字符)
内容的提问来源于stack exchange,提问作者Lijin Durairaj
相关产品推荐
相关产品推荐

