原生JS中如何截取字符串中的数字作为API请求参数
实现方案
要从目标字符串中提取站点编号数字,最直接的方式是利用正则表达式匹配符合格式的数字片段,以下是具体实现示例:
场景1:数字固定被- 数字 -包裹(如示例中的格式)
这种情况下可以精准匹配数字前后的分隔符,确保提取的是目标站点编号:
// 假设已获取下拉框选中的文本 const selectedText = "река Чепеларска - гр. Асеновград + Chepinska - 10084 - HPoint-Water level"; const dataAPI = { nameStation: '', nameStationNumber: '', dateStation: '', dataHours: '' }; // 用正则匹配"- 数字 -"格式的内容 const numberMatch = selectedText.match(/- (\d+) -/); if (numberMatch) { // 提取匹配到的数字,存入dataAPI dataAPI.nameStationNumber = numberMatch[1]; } else { // 未匹配到的 fallback 处理 dataAPI.nameStationNumber = ''; } console.log(dataAPI.nameStationNumber); // 输出:10084
场景2:字符串中存在多个数字,需提取唯一长数字串
如果字符串里有其他零散数字,但站点编号是唯一的长数字(比如示例中的5位),可以提取所有数字串后筛选:
const selectedText = "река Чепеларска - гр. Асеновград 2024 + Chepinska - 10084 - HPoint-Water level"; const dataAPI = { nameStation: '', nameStationNumber: '', dateStation: '', dataHours: '' }; // 提取所有数字串 const allNumbers = selectedText.match(/\d+/g); if (allNumbers) { // 筛选出长度为5的数字(可根据实际编号长度调整) dataAPI.nameStationNumber = allNumbers.find(num => num.length === 5) || allNumbers[0]; } else { dataAPI.nameStationNumber = ''; } console.log(dataAPI.nameStationNumber); // 输出:10084
注意事项
- 若下拉框的文本获取方式不同,可调整
selectedText的赋值逻辑,比如通过下拉框的value属性或其他DOM方法获取。 - 需根据实际业务场景调整正则规则,确保匹配的准确性。
内容的提问来源于stack exchange,提问作者Ben Johnson
相关产品推荐
相关产品推荐

