如何从字符串数组的每个元素中提取对应的数字部分
JavaScript 提取字符串数组中数字的实现方法
你可以通过数组遍历配合正则匹配的方式实现需求,具体实现代码如下:
// 示例输入数组 let arrayData = [ '99ASD', '01A', '0134-A', '78134:TSX' ] // 提取每个元素的数字部分 const numberResult = arrayData.map(item => { // 匹配所有连续数字片段后拼接为完整数字字符串 return item.match(/\d+/g).join('') }) console.log(numberResult) // 输出结果:['99', '01', '0134', '78134']
补充说明
- 核心正则
/\d+/g中,\d代表匹配阿拉伯数字,+代表匹配连续1位及以上的数字,g代表全局匹配,会提取字符串中所有符合规则的数字片段 - 若单个字符串存在多段分散的数字(例如
AB12CD34),上述代码会将所有数字拼接为一个完整字符串,得到1234;如果需要保留分段的数字数组,删除.join('')即可 - 若不需要保留数字的前置0,可将返回值用
Number()转换为数值类型:return Number(item.match(/\d+/g).join('')),转换后输出结果为[99, 1, 134, 78134] - 兼容无数字场景:如果数组中存在不含数字的字符串,
match()会返回null导致报错,可以加兜底逻辑修改为return (item.match(/\d+/g) || []).join(''),无数字的元素会返回空字符串。
内容的提问来源于stack exchange,提问作者Cardoso
相关产品推荐
相关产品推荐

