preg_match字符类替换太多了

时间:2012-01-15 18:30:03

标签: php regex preg-replace colon

我对正则表达式有点问题。我想清理一个字符串。

目前我正在使用以下正则表达式:

preg_replace("/[^a-zA-Z0-9 _-]/", "", "Example1:2@32");

给了我:“Example1232”

但结肠也不应该被取代。我已经尝试过了:

preg_replace("/[^a-zA-Z0-9 _-:]/", "", "Example1:2@32");

但这不起作用。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:3)

您必须转义-字符

preg_replace("/[^a-zA-Z0-9 _\-:]/", "", "Example1:2@32"));

答案 1 :(得分:2)

任何一种方法都应该有效:

  • 转义短划线-
  • 将短划线-放在正则表达式的末尾,因为在其他两个字符之间它具有一定的含义(即范围,如a-z)。