如何使用正则表达式为字符串中的特定字符添加前缀?
问题描述
假设存在以下字符串:
const str = ` hello! proceed - click button below. `
需要为特定字符(!、-、.)添加\前缀,期望得到如下结果:
` hello\! proceed \- click button below\. `
目前的实现方式如下,写法较为繁琐,想知道是否有更优的实现:
const str = ` hello! proceed - click button below. `.replace(/!/gm, '\\!').replace(/-/gm, '\\-').replace(/\./gm, '\\.') console.log(str);
优化实现方式
可以用字符集正则一次性匹配所有需要转义的字符,只调用一次replace方法,代码更简洁高效:
const str = ` hello! proceed - click button below. `.replace(/[!.-]/gm, '\\$&') console.log(str);
简单解释:
[!.-]是正则的字符集合,能一次性匹配!、-、.这三个目标字符(把-放在字符集末尾,避免被识别为范围符号)- 替换用的
\\$&里,$&会自动指代匹配到的每个字符,前面加\\就完成了统一转义 - 保留原代码的
gm修饰符,确保全局所有符合的字符都被替换,同时适配多行场景
内容的提问来源于stack exchange,提问作者Mike K
相关产品推荐
相关产品推荐

