如何编写Regex实现19位长度数字串第二位匹配数字9的校验
正则实现方案
适用场景说明
需求为匹配纯数字字符串,满足两个条件:
- 从左数第二位固定为数字9
- 字符串总长度大于18(即最少19位)
正确正则表达式
严格匹配19位纯数字
^\d9\d{17}$
匹配长度≥19位的纯数字
^\d9\d{17,}$
语法解释
^:锚定字符串的开始位置,避免匹配字符串中间的子串\d:匹配第一位任意数字,等价于[0-9]9:固定匹配第二位的数字9,直接满足位置匹配要求\d{17}:匹配后续17位数字,与前两位相加刚好为19位;若需要支持更长的数字串,改为\d{17,}即可,表示后续至少有17位数字$:锚定字符串的结束位置,避免匹配更长字符串中符合规则的前缀
原有写法错误原因
(?!^.[9])[0-9]{18}:使用了负向前瞻(?!...),作用是排除第二位为9的字符串,和你的需求完全相反,且长度仅匹配18位,不符合要求[^.[9][0-9]{18}:语法错误,方括号[]为字符组语法,你错误混用了位置匹配符号,正则解析器无法正常识别规则
内容的提问来源于stack exchange,提问作者Mohan K
相关产品推荐
相关产品推荐

