如何修改Regex以验证指定长度数字加可选+符号(含+时总长度合规)
解决你的正则长度限制问题
没问题,我来帮你搞定这个正则需求!首先咱们先把需求再明确一遍,避免理解偏差:
- 两种合法情况:
- 纯数字字符串,长度必须是8、11或13位;
- 数字结尾跟着一个
+符号,此时整个字符串的总长度必须是8、11或13位(也就是数字部分的长度是总长度减1,比如总长度8的话就是7位数字+1个+)。
最终正则表达式
^(?:\d{8}|\d{11}|\d{13}|\d{7}\+|\d{10}\+|\d{12}\+)$
正则拆解说明
咱们把每个部分拆开来解释,方便你理解:
^和$:这两个是锚点,分别匹配字符串的开头和结尾,确保整个字符串完全符合规则,不会出现部分匹配的情况(比如不会匹配到长字符串里的一段符合的子串);(?:...):这是一个非捕获组,用来把多个分支条件包裹在一起,让锚点作用于所有分支,而不是只作用于第一个分支;- 分支1
\d{8}:匹配8位纯数字; - 分支2
\d{11}:匹配11位纯数字; - 分支3
\d{13}:匹配13位纯数字; - 分支4
\d{7}\+:匹配7位数字加一个+,总长度刚好是8; - 分支5
\d{10}\+:匹配10位数字加一个+,总长度刚好是11; - 分支6
\d{12}\+:匹配12位数字加一个+,总长度刚好是13;
匹配/不匹配示例
- ✅ 匹配的合法字符串:
- 纯数字:
12345678、12345678901、1234567890123 - 带
+的:1234567+、1234567890+、123456789012+
- 纯数字:
- ❌ 不匹配的非法字符串:
12345678+(总长度9,不符合要求)123456+(总长度7,不符合要求)123456789(9位纯数字,不在指定长度内)12345678901+(总长度12,不符合要求)
内容的提问来源于stack exchange,提问作者DMP
相关产品推荐
相关产品推荐

