JS Regex到PHP Regex转换

时间:2016-02-24 23:26:43

标签: javascript php regex

我正在尝试将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);

我这样做了吗?正则表达式是否应该相同?

1 个答案:

答案 0 :(得分:0)

嗯,有正则表达式的几个“ flavors ”。他们每个人略有不同,但大多是相同的。

我只是假设您的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