2013-09-16 63 views
-1

字符串需要內部paranthesis如何用javascript中的正則表達式替換字符串?

str = Aries (march--something) 

我想要去除白羊座(動態文本)以及空間和括號匹配除了內容的一切。

我想:

/([^\(]*)?\(([^\)]*)?\)/ 

沒有工作。

+8

顯示你已經遠遠試過如此的愉悅。 – Jerry

+1

當我學習正則表達式時,這個網站對我非常有幫助:http://www.regular-expressions.info/reference.html – Gary

+0

我試過這個[(Aries \()| \)],它可以工作......但白羊座的文本是動態的 – tv4free

回答

0

只要有以下將工作沒有括號的嵌套:

var str = 'Aries (march--something)'; 
var r = str.replace(/\([^)]*\)/g, '()'); 
//=> "Aries()" 
0

你試圖匹配排除內部子的模式,但JavaScript的正則表達式實現不真正支持反向引用,這是如何以更強大的語言完成的。

解決此javascript的標準方法是使用字符串對象的替換方法,該方法接受第二個參數,該函數是一個函數。該函數與匹配結果一起被調用,使您能夠根據需要重新組合匹配組。

這裏是你的情況下,代碼:

var str = "Aries (march--something)"; 
var result = str.replace(/([^\s]+)\s*(\()[^\)]*(\))/, function(match, g1, g2, g3) { return g1+g2+g3; });