使用正则表达式替换匹配字符串的最后一个字符

时间:2017-02-16 13:44:48

标签: javascript regex string

我需要通过替换匹配特定模式的字符串的最后一个字符来对文件中的行进行后处理。

有问题的字符串是:

BRDA:2,1,0,0

我想将最后一位数字从0更改为1.第二位和第三位是可变的,但字符串将始终启动我想要影响的BRDA:2。

我知道我可以使用正则表达式匹配整个字符串,如此

/BRDA:2,\d,\d,1

我如何获得最后一位数字来执行替换?

由于

1 个答案:

答案 0 :(得分:3)

您可以使用捕获组匹配并捕获字符串的各个部分,以便稍后使用 backreferences 在替换结果中恢复这些部分。你需要更换/删除的东西应该匹配。

所以,使用



var s = "BRDA:2,1,0,0"
s = s.replace(/(BRDA:2,\d+,\d+,)\d+/, "$11")
console.log(s)




如果您需要匹配整个字符串,您还需要使用^$包装该模式:

s = s.replace(/^(BRDA:2,\d+,\d+,)\d+$/, "$11")

<强>详情:

  • ^ - 字符串锚点的开头
  • (BRDA:2,\d+,\d+,) - 捕获第1组匹配:
    • BRDA:2, - 文字的字符串BRDA:2,
    • \d+ - 一位或多位
    • , - 逗号
    • \d+, - 1位数字和逗号
  • \d+ - 1+位。

替换 - $11 - 被JS正则表达式引擎解析为对{1}}保留在第1组内的值的$1反向引用和1数字。