鍍金池/ 問答/Java  HTML/ replace(/"([^"]*)"/g, &qu

replace(/"([^"]*)"/g, "'$1'")與replace(/"/g, "'")效果相同,為何要用前者

在 w3school 的 replace() 方法介紹中,有這樣一個(gè)例子:

// 在本例中,我們將把字符串中所有單詞的首字母都轉(zhuǎn)換為大寫
name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'"); // 'a', 'b'

而換成如下簡(jiǎn)寫

name = '"a", "b"';
name.replace(/"/g, "'"); // 'a', 'b'

效果是相同的。既然后者可以實(shí)現(xiàn),為什么要用前者?是僅為了說明$1的用法還是有什么好處?

回答
編輯回答
終相守

這兩個(gè)正則表達(dá)式的含義就不一樣
你這個(gè)replace(/"/g, "'"); 是把所有的"轉(zhuǎn)換為'

而這個(gè)表達(dá)式 replace(/"([^"]*)"/g, "'$1'"); 是把所有的雙引號(hào)包裹著,且中間沒有出現(xiàn)雙引號(hào)的值,替換為用單引號(hào)包裹。

比如有這樣的一個(gè)字符串:'"dsds"dsd","ggfgfg"'
替換結(jié)果為:`

'"dsds"dsd","ggfgfg"'.replace(/"/g, "'");//值為:'dsds'dsd','ggfgfg'
'"dsds"dsd","ggfgfg"'.replace(/"([^"]*)"/g, "'$1'"); //值為: 'dsds'dsd','ggfgfg"
2018年4月12日 04:56