2012-01-15 37 views
2

我有一个正则表达式的问题。我想清理一个字符串。preg_match字符类替换太多

目前我使用下面的正则表达式:

preg_replace("/[^a-zA-Z0-9 _-]/", "", "Example1:[email protected]"); 

这给了我:“Example1232”

但是结肠不应该被更换了。我已经试过它:

preg_replace("/[^a-zA-Z0-9 _-:]/", "", "Example1:[email protected]"); 

但这不起作用。有人能帮助我吗?

回答

3

你必须逃离-字符

preg_replace("/[^a-zA-Z0-9 _\-:]/", "", "Example1:[email protected]")); 
+0

谢谢!我总是错过了它。我只是看着结肠,认为这是问题... – Papayu 2012-01-15 18:36:54

2

两种方法都应该工作:

  • 逃脱破折号-
  • 把破折号-在你的正则表达式的结束,因为其间的其他两个字符它具有一定的意义(即一个范围,如在a-z中)。