首页 > 解决方案 > 正则表达式替换但忽略最后一个字符

问题描述

我正在尝试替换

/ok/how/are

$ok, $how, $are

使用正则表达式

str.replace(/\/([0-9a-zA-Z]+)/g, '\$$1,')

结果是

$ok, $how, $are, 

我不能使用另一个语句来删除最后一个前导,如何在没有最后一个的情况下获得期望的结果,

标签: javascriptregexreplaceregex-group

解决方案


您可以使用两个捕获的组,一个带有字符串锚的结尾,另一个没有锚并相应地替换值

let str = `/ok/how/are`
 
let final = str.replace(/\/([a-zA-Z\d]+)$|\/([a-zA-Z\d]+)/g, (_, g1, g2) => g1 ? `$${g1}` : `$${g2}, `)
   
console.log(final)


推荐阅读