2016-12-25 36 views
0

我試圖替換在Javascript中另一個字符串的字符串,並使用由埃裏克·溫德林在How do you use a variable in a regular expression?給出的答案 - 代碼如下:的Javascript正則表達式沒有重複錯誤

var re = new RegExp(delim, 'g'); 
return input.replace(re,","); 

當我運行這個我得到的錯誤

/*** /:沒有重複

(DELIM的值是 「***」 BTW)

我明白,如果你得到一個沒有重複的錯誤,這意味着你沒有正確逃脫你的正則表達式中的字符,但爲什麼我在這種情況下得到這個錯誤?

+0

'*'是一個令牌,這意味着 「重複前面的」。正如消息所述,沒有什麼可重複的。 – vlaz

+0

你是否想要匹配3個星號?因爲那麼請使用'/ \ * {3}/g' –

+0

可以在這裏添加預期的行爲嗎? 這是一個示例字符串和替換字符串 –

回答

2

*是保留的重複字符,匹配前一個字符或組的0或更多倍,因此您需要轉義它(相當於{0,})。

將分隔符字符串更改爲\\*\\*\\*\\*{3}

delim = '\\*{3}' 
 
input = 'hello *** world' 
 
var re = new RegExp(delim, 'g'); 
 
console.log(input.replace(re, ","))

+0

偉大的,謝謝澄清說 – auburg