You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过.innerText提取<li>中的连续数字并转为整数?

解决方案

你的问题出在正则表达式/\d/g会匹配每一个单独的数字字符,所以返回单个数字组成的数组。要提取连续的数字(比如25),可以用以下几种简便高效的方法:

方法1:匹配连续数字(推荐)

修改正则为/\d+/,匹配一个或多个连续的数字,再转换为整数:

const itemText = item.parentElement.innerText;
// 匹配第一个连续数字序列,无匹配时返回null
const weightMatch = itemText.match(/\d+/);
// 转成整数,默认值0避免报错
const itemWeight = weightMatch ? parseInt(weightMatch[0], 10) : 0;

如果需要支持浮点数(比如25.5kg),可以把正则改成/\d+\.?\d*/,并使用parseFloat替代parseInt。

方法2:拼接现有数组结果(仅适合无分散数字的场景)

如果坚持用你原来的匹配逻辑,可以把数组元素拼接成字符串后转数字:

const itemText = item.parentElement.innerText;
const itemWeightChars = itemText.match(/\d/g) || [];
const itemWeight = Number(itemWeightChars.join(''));

⚠️ 注意:这种方式会把文本中所有分散的数字拼在一起,比如"2kg 5"会得到25,如果你的列表项存在多个数字,不推荐用这种方法。

方法3:精准匹配固定格式(最优,如果格式固定)

如果你的列表项格式固定为"xxx - Xkg",可以用更精准的正则匹配破折号后、kg前的数字,完全避免其他数字干扰:

const itemText = item.parentElement.innerText;
// 精准匹配"- 25kg"中的数字部分
const weightMatch = itemText.match(/- (\d+)kg/);
const itemWeight = weightMatch ? parseInt(weightMatch[1], 10) : 0;

内容的提问来源于stack exchange,提问作者Laurens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:54:19