2014-02-12 42 views
1

我有一個字符串,我想使用正則表達式和String.replace()刪除所有的逗號。但由於某種原因,一個逗號依然存在,它正在拋棄我的數據收集工作。我的正則表達式有什麼問題,爲什麼?更具體地說,爲什麼「去皮」後的逗號被刪除,但沒有被「切碎」。Javascript正則表達式逗號檢測不工作

var troubledLine= "3 medium eggplants 6 unpeeled garlic cloves 1/2 cup extra virgin olive oil 3 ripe medium tomatoes peeled, seeded and chopped, juices reserved 1/5 tablespoon sweet paprika 1 pinch cayenne pepper salt freshly ground black pepper 1 tablespoon finely chopped fresh flat-leaf parsley" 

var correctedLine=troubledLine.replace(/,/,"RE","gi"); 
console.log(correctedLine); 

輸出= 3個介質茄子6個帶皮蒜瓣1/2杯橄欖油3個成熟西紅柿介質去皮去籽和切碎,果汁保留1/5湯匙甜椒1個捏辣椒鹽新鮮黑胡椒粉1湯匙切碎的新鮮扁葉荷蘭芹。

+1

第三個參數應該是什麼?很確定'.replace()'只有兩個參數。 – Travesty3

+0

修飾符進入正則表達式'/,/ g' – elclanrs

+0

如上所述,使用:'var correctedLine = troubledLine.replace(/,/ gi);'而不是.. –

回答

2

replace方法需要兩個參數和你似乎是混合與RegExp方法語法正則表達式語法。您可以直接使用/,/g並使標誌成爲正則表達式模式的一部分。第二個參數是替換值,在這種情況下是空字符串。

你的代碼更改爲以下:

var correctedLine = troubledLine.replace(/,/g, ''); 

因爲你的意圖是要匹配逗號,你可以刪除i標誌,因爲不區分大小寫。

1

您在混淆new RegExp.replace()的參數。

你想要.replace(/,/g, "")

0

也許有一點題外話,因爲你特別要求的正則表達式,但在這裏它會以另一種方式:

correctedLine = troubledLine.split(',').join(''); 

用正則表達式這種方式無毛。

一些info修飾符爲您的正則表達式。