JS正则表达式到PHP正则表达式的转换


JS Regex to PHP Regex Conversion

我正在尝试将JS替换正则表达式转换为PHP正则表达式等效项。

这是我的JS:

text=text.replace(/@#'$%'^&'*'(')_'+=~`'{'['}']'|:;<>'/'''t/g, ' ');
text=text.replace(/'s+-+'s+/g, '.');
text=text.replace(/'s*[,'.'?!;]+'s*/g, '.');
text=text.replace(/'s*'bbut'b's*/g, '.');
text=text.replace(/'s{2,}/g, ' ');

这是我对PHP等价物的尝试:

$text = preg_replace('/@#'$%'^&'*'(')_'+=~`'{'['}']'|:;<>'/'''t/', ' ', $text);
$text = preg_replace('/'s+-+'s+/', '.', $text);
$text = preg_replace('/'s*[,'.'?!;]+'s*/', '.', $text);
$text = preg_replace('/'s*'bbut'b's*/', '.', $text);
$text = preg_replace('/'s{2,}/', ' ', $text);

我这样做对吗?正则表达式模式应该相同吗?

嗯,正则表达式有"风格"。它们中的每一个都略有不同,但大多相同。

我只是假设你的Javascript正则表达式已经在工作了,因为你要求转换。但是,如果有示例目标文本会非常好。

这是我对您的查询的转换:

1. $re = "/@#''$%''^&''*''('')_''+=~`''{''[''}'']''|:;<>''/''''''t/";
2. $re = "/''s+-+''s+/"; 
3. $re = "/''s*[,''.''?!;]+''s*/";
4. $re = "/''s*''bbut''b''s*/";
5. $re = "/''s{2,}/";

我使用网页 regex101.com 来验证它是否有效,然后做了一个带有目标文本的快速 PHP 脚本来确认它是否有效。

这是一个 Pastebin 脚本,以及它的输出:http://pastebin.com/Yy2Zg11Z