2012-04-26 220 views
13

我嘗試了不同的方法來在JavaScript中使用正則表達式來轉義括號,但是我仍然無法使它工作。正則表達式來逃避括號

這是字符串:

"abc(blah (blah) blah()...).def(blah() (blah)..() ...)" 

我想這個要檢測:

abc().def() 

使用此代碼,返回false。

str.match(/abc\([^)]*\)\.def\([^)]*\)/i); 

你能告訴我爲什麼我的正則表達式不工作嗎?

+1

你確定嗎?它爲我返回'[「abc(blah等等).def(等等等等)」]'''。 – Blender 2012-04-26 03:40:46

+0

對不起,我剛剛編輯過這篇文章。基本上它嵌套括號。 – RoundOutTooSoon 2012-04-26 03:42:58

+2

你是什麼意思,你想它「被檢測」?你的意思是你想拉出'abc()。def()'文本並用它做些什麼?或者你只是想讓你的正則表達式匹配「abc(blah(blah)... etc」字符串? – alan 2012-04-26 03:52:56

回答

12

此正則表達式將匹配您提供的字符串:

(abc\().+(\)\.def\().+(\)) 

而且使用後向引用$1$2$3會產生abc().def()

或者只是使用這個,如果你不希望反向引用:

abc\(.+\)\.def\(.+\) 
0

K ...這是一個想法...

abc(blah (blah) blah()).def(blah() (blah).blah()) 

使用正則表達式這樣

var regExp1 = \^([a-z])*\(\ig; 

它會匹配

abc(

然後用

var regExp2 = /\)\./ 

它會匹配

​​

在字符串中..

然後分裂的實際字符串,使之成爲

def(blah() (blah).blah()) 

重複,直到正則表達式找不到

regExp2 

,並添加一個右括號.. 我能想到的最簡單的解決方案.. 希望它有幫助..