繁体   English   中英

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

[英]Replace last character of a matched string using regex

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

有问题的字符串是:

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

细节

  • ^ - 字符串锚点的开始
  • (BRDA:2,\\d+,\\d+,) - 捕获组#1匹配:
    • BRDA:2, - 字面意思是BRDA:2,
    • \\d+ - 1位或更多位数
    • , - 一个逗号
    • \\d+, - 1+位数和逗号
  • \\d+ - 1+位数。

替换 - $11 - 由JS正则表达式引擎解析为$1反向引用保持在第1组和1位数内的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM