如何使用jQuery/Javascript将带引号字符串替换为修改后版本
解决带转义引号字符串的前后修饰替换问题
你的代码错误在于:str.match()返回所有匹配项组成的数组,直接将数组与字符串拼接时,数组会被转换为逗号分隔的字符串,导致每一处匹配位置都被替换成所有匹配项的集合,而非单个匹配项。
正确的做法是利用String.replace()的回调函数参数,对每一个匹配到的子串单独处理:
示例代码1:
var str = 'name="benson"; password="1234"'; var result = str.replace(/".+?"/gi, function(match) { return '--' + match + '--'; }); console.log(result); // 输出: name=--"benson"--; password=--"1234"--
示例代码2:
var str = 'I "love" and I like "programming"'; var result = str.replace(/".+?"/gi, match => `--${match}--`); console.log(result); // 输出: I --"love"-- and I like --"programming"--
原理说明:
当replace的第二个参数为函数时,该函数会在每次匹配到目标子串时被调用,参数match即为当前匹配到的单个子串。我们只需返回添加了前后--修饰的match,即可实现对每个匹配项的单独替换。
内容的提问来源于stack exchange,提问作者Karue Benson Karue
相关产品推荐
相关产品推荐

