2016-03-15 27 views
0

我有以下正則表達式不工作在JQuery中,但在PHP版本工作正常PHP的正則表達式不工作在JQuery

我做錯了什麼?

表達

if\s*\(((?:[^\(\)]|\((?1)\))*+)\)\s*{((?:[^{}]|{(?2)})*+)} 

php link

Jquery Link

+0

regex101實際上告訴你哪些功能在JS正則表達式引擎中不受支持。現在要查找如何以不同的方式完成這些操作,或者如果語法不同。 – simbabque

+0

'(?1)'是JS中不可用的子程序調用。 –

+0

這取決於你想用這個正則表達式來做什麼 –

回答

1

正則表達式是不是一個普遍的語言。您正在使用一些僅在PHP/PCRE中可用的構造(請參閱下面的變化),而不是JavaScript。

這正則表達式是差不多的,在任一版本的工作:if\s*\(((?:[^\(\)]|\((\1)\))*)\)\s*{((?:[^{}]|{(\2)})*)}

我改變

(?1)成爲(\1)(同2)

*+成爲*


注意:我刪除了回溯控制序列:*+,所以我不會感到驚訝,如果這種災難性的回溯與一些投入。