我试图通过正则表达式删除除字母数字字符之外的所有字符&空间。
这是我希望实现的转换。
"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);
但作为一名正则表达式新手,我无法弄清楚如何插入空格。当我尝试时,我的结果很奇怪。
答案 0 :(得分:22)
插入空格就像您期望的那样简单:
preg_replace("/[^0-9a-zA-Z ]/", "", $val);
顺便说一下。你的第三个例子对我来说不清楚:你是否也要替换-
?如果没有,您还需要将其添加到角色列表中。
有关正在运行的示例,请参阅this。
答案 1 :(得分:6)
这应该有效:
preg_replace("/[^0-9a-zA-Z -]/", "", $val);
请记住将“ - ”添加到字符集块的最后,否则它可能会被解释为范围运算符。
根据您的正则表达式标志(如果启用了空格/注释),您可能需要使用" "
或(更严格){{替换"-"
("\s"
之前) 1}}。