如何修改正则表达式,提取字符串中特殊符号分隔的所有数字?
解决从含特殊符号的字符串中提取数字的正则问题
你的问题核心在于正则缺少全局匹配标志,同时字符类里存在多余符号,修改方案如下:
问题分析
原正则/[0-9/.]+/未添加全局匹配标志g,导致match()方法仅返回第一个匹配结果;另外字符类中的/是多余的,原字符串中不存在该符号,无需纳入匹配规则。
修改后的正则与代码
let s = '1.58х3.45'; re = /[0-9.]+/g; found = s.match(re); console.log(found); // 输出 ["1.58", "3.45"]
关键修改点
- 添加全局标志
g:让match()遍历整个字符串,返回所有符合规则的匹配项数组 - 移除字符类中的
/:精简匹配规则,避免误匹配无关字符
如果需要更严谨地匹配数字(包括整数、带小数点的数),也可以使用/\d*\.?\d+/g,效果一致,但[0-9.]+在这个场景下更简洁。
内容的提问来源于stack exchange,提问作者Eniso
相关产品推荐
相关产品推荐

