為什麼Javascript的replace結果是這樣子的?


在Chrome42中運行如下Javascript


 javascript


 var str=",,,,"
document.write(str.replace(",",""))

運行結果:


 javascript


 ,,,

為什麼呢?

string JavaScript

猫井喵太郎 10 years, 1 month ago

str.replace(/,/g, '')

cjnono answered 10 years, 1 month ago

因爲 str.replace 是用正則匹配的,而 v8 不支持第一個參數是字符串時指定 flag。

所以 str.replace(',', '') 等價於 str.replace(/,/, '') ,只匹配第一個。

爱撒旦韩国ia answered 10 years, 1 month ago

xiaoE answered 10 years, 1 month ago

String.replace()方法默认只替换第一个匹配的字符,想全局匹配可以使用正则表达式作为匹配条件。

OpenVL answered 10 years, 1 month ago

字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
参考: http://www.w3school.com.cn/jsref/jsref_replace.asp

洛VER·X answered 10 years, 1 month ago

Your Answer