2012-01-15 85 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中)。