2016-09-18 294 views
0

我試圖用下面的RegExp來轉義括號和裏面的東西。 這裏是例子字符串:如何使用Javascript RegExp來轉義括號?

hjdsoghbesi (saeogbesor) serogberso ersberawsewf(edsrgb) sfdrobersb ouersber

我想要的結果代碼是

hjdsoghbesi serogberso ersberawsewf sfdrobersb ouersber

我嘗試使用以下命令:

myString.replace(/\(.*\)/g,"")

然而,這集中在第一個開放的括號和版本Ÿ最後關閉支架和給我:

hjdsoghbesi sfdrobersb ouersber

我如何能實現我想要的結果呢?

如果您打算回答,請告訴我爲什麼您的RegExp可以達到我的目的,因爲我不熟悉RegExp。

+0

你是什麼意思逃脫?你的意思是刪除? – 2016-09-18 15:42:49

+0

當你的regexp不能正常工作時,試試regex101這樣的在線正則表達式測試程序總是個好主意。除了測試你的正則表達式之外,它還會以人的方式向你描述它。在這種情況下,*的描述是:*量詞:\ *在零和無限次之間,儘可能多**,根據需要返回[貪婪] *。 – 2016-09-18 15:50:54

回答

1

使用非貪婪量詞:

var str = "hjdsoghbesi (saeogbesor) serogberso ersberawsewf(edsrgb) sfdrobersb ouersber"; 
 
console.log(str.replace(/\(.*?\)/g, ""));

*是貪婪的,它會匹配儘可能多的字符可能。

*?是懶惰的,它會匹配儘可能少。

+0

我看到你用過「?」以防止問題。你能解釋爲什麼會發生這種情況嗎? –

+0

嵌套括號怎麼樣? –

+0

@ stdob--我假設沒有嵌套。正則表達式無法處理任意深度的嵌套。 – Oriol

0

除了Oriol的回答,我看到以下可能性。使用[^\)]而不是.myString.replace(/\([^\)]*\)/g,"")[^\)]與除)以外的所有字符匹配。 []在此處列出匹配字符並且^將它們倒置,以便除了列出的字符以外的所有字符都匹配。

+0

無需轉義字符集內的')'。 – 2016-09-18 15:44:21