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

如何在JavaScript中使用正则表达式从字符串中提取匹配子串

JavaScript正则提取匹配子串解决方案

问题原因

  • 错误添加了^、$锚点:两个符号分别限制匹配字符串的开头和结尾,你的目标字符串前缀是[2021-05-29] Version,不可能符合开头、结尾都是版本号的规则,直接匹配失败
  • 字符串正则转义错误:使用new RegExp()传入字符串参数时,反斜杠\本身需要二次转义,你写的\d会被解析为普通字符d,无法实现数字匹配的效果

正确实现

推荐写法:正则字面量(无需额外转义)

const versionRegex = /(\d+)\.(\d+)\.(\d+)/
const line = "[2021-05-29] Version 2.24.9"
const matchResult = line.match(versionRegex)

if (matchResult) {
  // 等价于Python中found.group(),返回完整匹配的子串
  console.log(matchResult[0]) // 输出结果:2.24.9
  // 三个分组的内容分别对应索引1、2、3的元素
  console.log(matchResult[1]) // 2
  console.log(matchResult[2]) // 24
  console.log(matchResult[3]) // 9
}

RegExp构造函数写法

如果需要动态生成正则,使用构造函数的写法要注意转义反斜杠:

const versionRegex = new RegExp('(\\d+)\\.(\\d+)\\.(\\d+)')
const line = "[2021-05-29] Version 2.24.9"
const matchResult = line.match(versionRegex)
// 后续判断和取值逻辑和上面一致

扩展说明

如果需要提取字符串中所有符合规则的版本号,给正则添加g全局匹配标识即可:

// 字面量写法加g
const versionRegex = /(\d+)\.(\d+)\.(\d+)/g
// 构造函数写法第二个参数传g
const versionRegex = new RegExp('(\\d+)\\.(\\d+)\\.(\\d+)', 'g')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:54:04