14

我尝试了不同的方法来使用 JavaScript 中的正则表达式来转义括号,但我仍然无法使其工作。

这是字符串:

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

我希望检测到这一点:

abc().def() 

使用此代码,它返回 false。

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

你能告诉我为什么我的正则表达式不起作用吗?

4

2 回答 2

12

此正则表达式将匹配您提供的字符串:

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

并且使用反向引用$1$2$3会产生abc().def()

或者如果您不想要反向引用,请使用它:

abc\(.+\)\.def\(.+\)
于 2012-04-26T03:57:21.323 回答
0

K...这是一个想法...

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

像这样使用正则表达式

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

它会匹配

abc(

然后使用

var regExp2 = /\)\./

它会匹配

")." 

在字符串..

然后拆分实际的字符串,使其变为

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

重复直到正则表达式找不到

regExp2 

并添加一个右括号..我能想到的最简单的解决方案..希望它有所帮助..

于 2012-04-26T04:08:22.940 回答