正则表达式,用于删除除字母数字&空格(PHP)


Regular expression to remove anything but alphanumeric & spaces (in PHP)

我试图通过正则表达式删除除字母数字字符外的所有字符&空间。

这是我希望实现的转换。

"I am a string" → "I am a string"
"How are you?" → "How are you"
"#53-Jeff" → "53-Jeff"

到目前为止,我有这个:

return preg_replace("/[^0-9a-zA-Z]/","", $val);

但是作为一个正则表达式新手,我不知道如何插入一个空格。

插入空格就像你期望的那样简单:

preg_replace("/[^0-9a-zA-Z ]/", "", $val);

顺便说一句。你的第三个例子我不太明白:你也要更换-吗?如果没有,你也需要把它添加到字符列表中。

应该可以:

preg_replace("/[^0-9a-zA-Z -]/", "", $val);

请记住在字符集块的末尾添加"-",否则它可能被解释为范围操作符。

根据您的regex标志(如果启用空白/注释),您可能需要将" "(在"-"之前)替换为"'s"或(更严格)"' "