将正则表达式转换为PHP


translate regex to PHP

我很难将这个函数移植到PHP。

SomeString.replace(/([.*+?^=!:${}()|'[']'/''])/g, "''$1");

老实说,我甚至不知道它到底是干什么的。我尝试至少将表达式与preg_replace一起使用但得到

preg_match():编译失败:在偏移量25 处缺少字符类的终止]

当使用类似的东西时

preg_match('/([.*+?^=!:${}()|''['']''/''])/', $string, $matches);

javascript函数.replacepreg_replace在php中翻译,因此:

SomeString.replace(/([.*+?^=!:${}()|'[']'/''])/g, "''$1");

变为:

$SomeString = preg_replace('~([.*+?^=!:${}()|'[']/''''])~', "''''$1", $SomeString);

这将单独替换字符类中已转义的特殊字符。

除此之外,您遇到的错误是由于角色在尝试使用preg_match时使用了双转义符,因此必须使用双转义符。

preg_match('/([.*+?^=!:${}()|'[']'/''''])/', $string, $matches);
//                           |     ^^^^^ double-double escape the backslash
//                           ^ no needs to double escape here

您可以使用:

preg_match('#([.*+?^=!:${}()|'[']/''''])#', $string, $matches);

您的错误是在正则表达式中使用了''而不是''''。匹配反斜杠需要双转义。一个用于PHP的''和另一个用于PCRE引擎的''