为什么我的正则表达式在PHP中工作而不是JavaScript?

时间:2015-08-16 00:53:52

标签: javascript regex

我有自己创建的正则表达式,我目前正在使用PHP运行。虽然当我将它合并到JavaScript时,它拒绝工作。我也在Python中尝试过,它的工作非常好。

正则表达式:

@[[](.[^]]+)[]][()](\d+)[)]

Testing in PHP, and working

Testing in JavaScript, and not working

1 个答案:

答案 0 :(得分:31)

JavaScript无法自动转义]

这将有助于您获得视觉概念:

PCRE:

PCRE

JS:

JS

的Python:

Python

所以要解决这个问题,你需要转义括号

@[[](.[^\]]+)[\]][()](\d+)[)]
//      ^     ^  

编写此正则表达式的最佳方法是尽量减少字符类的使用:

@\[(.[^\]]+)\][()](\d+)\)

这就是为什么逃避这些东西的好习惯,而不是依赖于这种味道的怪癖。

我通过regex101生成了这些图片。