正则表达式需求:匹配含空格且总数字长度为7-9的数字组合
正则表达式匹配带空格的7-9位数字组合
我不太擅长正则表达式,想要匹配带有空格的数字组合,类似表达式\s*([0-9]+)\s*([0-9]+)\s*([0-9]+),但要求总数字长度(不含空格)为7-9位。
符合匹配的示例
12345678 123456789 1234567 123 4567 8 12 3456789 12 3456 7
不匹配的示例
123456 1234567890 1234 5 6 123 4567 890 12 345678900 12 3456
解决方案
可以用带正向预查的正则表达式实现需求,既保留三个数字分组的捕获,又限制总数字长度:
^(?=(?:\D*\d){7,9}$)\s*(\d+)\s*(\d+)\s*(\d+)\s*$
正则说明:
^和$:锁定字符串首尾,避免仅匹配目标字符串的一部分(?=(?:\D*\d){7,9}$):正向预查,统计整个字符串中的数字总数,确保刚好在7-9位之间(\D*\d表示任意非数字字符后接一个数字,循环7-9次)\s*(\d+)\s*(\d+)\s*(\d+)\s*:匹配三个连续数字组,组之间允许任意数量的空格,字符串首尾也可以有空格
内容的提问来源于stack exchange,提问作者ringus
相关产品推荐
相关产品推荐

