鍍金池/ 問答/HTML/ 新手問一個正則表達(dá)式的問題?

新手問一個正則表達(dá)式的問題?

x='"a","b"';
y=x.replace(/([^"]*)/g,"'$1'");

為何返回值會是:''"'a'''"','''"'b'''"'' ?
/([^"]*)/g捕捉的不應(yīng)該只是a和b嗎,為什么會返回這么多引號?

謝謝回答

回答
編輯回答
陌上花

你對規(guī)制式的理解還需要加強(qiáng)啊,你y=x.replace(/([^"]*)/g,"'$1'");期望匹配a和b并替換為添加外面的單引號,這個是匹配不了的,*的問題前面人說了,這里再提一點是[^"]是指非"的字符,在x中實際有3個,分別是a`,`b啊。
y=x.replace(/([A-z]+)/g,"'$1'");可能才是你期望的。

2017年10月13日 23:00
編輯回答
撿肥皂

正則的問題 * 匹配任意次,越多越好,也就是說,空白也匹配,匹配 0 次

clipboard.png

你實際上把上面匹配到的 7 個字符串都用它的捕獲組去替換了,舉個例子

首先,字符串開頭的空白你匹配到了,$1是空白,然后你把開頭的空白替換成了'$1',實際上就是'',所以你的字符串開頭多了''

后面的類似,,,,你慢慢分析吧

2017年4月19日 13:22
編輯回答
單眼皮
// *是匹配0或者多數(shù)的意思 具體原因他們也說了
// 估計你是想把 "a","b" 換成 'a','b' 吧
var x = '"a","b"',
y = x.replace(/"([^"]*)"/g,"'$1'");
console.log(y);
2018年7月17日 09:54