正则表达式删除除字母数字和&之外的任何内容空格(PHP)

时间:2011-11-12 21:51:24

标签: php regex

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

这是我希望实现的转换。

"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);

但作为一名正则表达式新手,我无法弄清楚如何插入空格。当我尝试时,我的结果很奇怪。

2 个答案:

答案 0 :(得分:22)

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

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

顺便说一下。你的第三个例子对我来说不清楚:你是否也要替换-?如果没有,您还需要将其添加到角色列表中。

有关正在运行的示例,请参阅this

答案 1 :(得分:6)

这应该有效:

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

请记住将“ - ”添加到字符集块的最后,否则它可能会被解释为范围运算符。

根据您的正则表达式标志(如果启用了空格/注释),您可能需要使用" "或(更严格){{替换"-""\s"之前) 1}}。