在 w3school 的 replace()
方法介绍中,有这样一个例子:
// 在本例中,我们将把字符串中所有单词的首字母都转换为大写
name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'"); // 'a', 'b'
而换成如下简写
name = '"a", "b"';
name.replace(/"/g, "'"); // 'a', 'b'
效果是相同的。既然后者可以实现,为什么要用前者?是仅为了说明$1
的用法还是有什么好处?
这两个正则表达式的含义就不一样
你这个
replace(/"/g, "'");
是把所有的"
转换为'
而这个表达式
replace(/"([^"]*)"/g, "'$1'");
是把所有的双引号包裹着,且中间没有出现双引号的值,替换为用单引号包裹。比如有这样的一个字符串:
'"dsds"dsd","ggfgfg"'
替换结果为:`