如何使用正则表达式匹配数字值分割纯数字字符串?
使用正则表达式分割连续相同数字的字符串
要实现把纯数字字符串按连续重复的数字分组(比如把"11222344"拆成["11","222","3","44"]),用正则表达式就能轻松搞定,核心思路是匹配连续重复的单个数字。
核心正则表达式
这里用到的关键正则是:/(\d)\1*/g
来拆解一下这个正则的逻辑:
(\d):捕获任意单个数字,把它存到第一个分组里\1*:匹配和第一个分组里完全相同的数字,允许0次或多次重复(这样就能把连续的相同数字串起来)g:全局匹配标记,确保遍历整个字符串,找出所有符合条件的连续数字序列
代码示例(JavaScript)
直接用match()方法就能得到想要的结果:
const inputStr = "11222344"; const groupedDigits = inputStr.match(/(\d)\1*/g); console.log(groupedDigits); // 输出: ["11","222","3","44"]
代码示例(Python)
Python里可以用re.finditer()来获取所有匹配对象,再提取完整匹配的子串:
import re input_str = "11222344" matches = re.finditer(r'(\d)\1*', input_str) grouped_digits = [match.group() for match in matches] print(grouped_digits) # 输出: ['11', '222', '3', '44']
额外提示
如果需要确保输入是纯数字字符串(避免混入非数字字符导致错误),可以先做个验证:
- JavaScript:
if (/^\d+$/.test(inputStr)) { ... } - Python:
if input_str.isdigit(): ...
这样就能保证处理的是符合要求的输入啦!
内容的提问来源于stack exchange,提问作者JoeyD2212
相关产品推荐
相关产品推荐

