如何在PHP中编写正则表达式以删除特殊字符?

Ben*_*Rae 11 php regex

我是PHP的新手,我注意到处理正则表达式的方法有很多种.

这就是我目前使用的:

$replace = array(" ",".",",","'","@");
$newString = str_replace($replace,"_",$join);

$join = "the original string i'm parsing through";
Run Code Online (Sandbox Code Playgroud)

我想删除不是az,AZ或0-9的所有内容.我正在寻找上述的反向功能.写一个伪代码的方式就是

如果$ join中的字符不等于az,则AZ,0-9然后将字符更改$join"_"

run*_*alk 38

$newString = preg_replace('/[^a-z0-9]/i', '_', $join);
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题.

  • 嗨anteninen,谢谢你的回复!这是否区分大小写,除了大写字母之外会不会这样?谢谢,本. (2认同)
  • 这就是最后的"我" - 不区分大小写. (2认同)

Gav*_*ler 10

任何非az,AZ,0-9的正则表达式是:

preg_replace('/[^a-zA-Z0-9]/', "_", $join);
Run Code Online (Sandbox Code Playgroud)

这被称为否定字符类


Pow*_*ord 7

最简单的方法是:

preg_replace('/\W/', '_', $join);
Run Code Online (Sandbox Code Playgroud)

\ W是非单词字符组.单词字符是az,AZ,0-9和_.\ W匹配以前未提及的所有内容*.

编辑:preg使用Perl的正则表达式,记录在perlman perlre文档中.

*编辑2:这假定为C或其中一个英语语言环境.其他语言环境可能在单词字符类中具有重音字母.Unicode语言环境仅将代码点128下面的字符视为字符.