PHP中的preg_replace - NOT条件的正则表达式

Ali*_*Ali 9 php regex preg-replace

我正在尝试使用preg_replace在PHP中编写一个函数,它将替换列表中找不到的所有字符.通常我们会替换它们的位置,但这个不同.

例如,如果我有字符串:

$mystring = "ab2c4d";
Run Code Online (Sandbox Code Playgroud)

我可以编写以下函数,用*替换所有数字:

preg_replace("/(\d+)/","*",$mystring);
Run Code Online (Sandbox Code Playgroud)

但我想从a到z替换那些既不是数字也不是字母的字符.它们可能是#$*();〜!{} [] |\/.,<>?等等

所以除了数字和字母之外的任何东西都应该被别的东西取代.我怎么做?

谢谢

Fel*_*ing 18

您可以使用否定的字符类(^的开头使用):

/[^\da-z]+/i
Run Code Online (Sandbox Code Playgroud)

更新:我的意思是,你必须使用一个否定的字符类,你可以使用我提供的那个,但也有其他的;)


Dmi*_*tri 5

尝试

preg_replace("/([^a-zA-Z0-9]+)/","*",$mystring);
Run Code Online (Sandbox Code Playgroud)


mar*_*rio 5

你想使用一个否定的"字符类".它们的语法是[^...].在你的情况下,[^\w]我想.