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

标签 javascript regex string

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

有问题的字符串是:

BRDA:2,1,0,0

我想将最后一位数字从 0 替换为 1。第二和第三位数字是可变的,但字符串将始终以我想要影响的 BRDA:2 开头。

我知道我可以像这样使用正则表达式匹配整个字符串

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

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

谢谢

最佳答案

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

所以,使用

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")

详细信息:

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

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

关于javascript - 使用正则表达式替换匹配字符串的最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42275704/

相关文章:

c# - 将 16 位字符串拆分为 4 个部分并将它们存储在 C# 中的数组中

javascript - 替换字符串中的管道

r - 将字符串拆分为多个固定宽度的列

javascript - 从下到上缩放图像javascript

c# - 请告诉我问题是什么 c# regex.split()

python - 正则表达式到 FindAll 字符串链,直到带有 python 的点

c++ - 无法将 unordered_map<char,char> 转换为 unordered_map<char, string>

string - 如何使用传递的字符串进行转换?

javascript - 在 Chrome DevTools 中同时查看元素和源

javascript - 将 innerHTML 更改为由它的 ClassName 捕获的 div 的 Id 的值