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

如何使用JavaScript正则表达式提取字符串中方括号内的数字

解决方案

要提取方括号内的数字,同时忽略不含方括号的字符串,可以用以下两种正则方案:

方案1:捕获组匹配

使用正则 /\[(\d+)\]/,通过捕获组精准提取方括号里的数字:

const testCases = [
  'value[0]',
  'value[1]',
  'object2value[0]',
  'object90'
];

testCases.forEach(str => {
  const match = str.match(/\[(\d+)\]/);
  const result = match ? match[1] : 'no match';
  console.log(`${str}        ---> ${result}`);
});

运行结果完全符合预期:

value[0]        ---> 0
value[1]        ---> 1
object2value[0] ---> 0
object90        ---> no match

之前的正则问题出在哪?

你用的 ([\w]+)*?\[\d\] 是匹配整个前缀+方括号+数字的完整串(比如value[0]),而不是单独提取方括号内的数字。我们需要把正则焦点放在方括号内的数字上,用捕获组把这部分单独分离出来。

方案2:正向断言(ES2018+支持)

如果不想用捕获组,可以用正向前后断言直接匹配目标数字:

const regex = /(?<=\[)\d+(?=\])/;
// 用法示例
console.log('value[123]'.match(regex)[0]); // 输出123
console.log('object90'.match(regex)); // 输出null

(?<=\[) 限定前面必须是[,(?=\])限定后面必须是],中间的\d+就是要提取的数字,匹配结果直接是数字本身,无需额外处理捕获组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:42:41