2014-10-17 46 views
0

我需要從字符串中刪除某些特殊字符。 對於同正在使用使用正則表達式刪除點刪除*太

replace(/[()-/.]/gi, ''); 

這是工作正常,但我意識到,它還會刪除「*」。任何想法,爲什麼? 如果我刪除'。'從表達它的工作正常,所以我想這是造成一些問題,這是不確定的

回答

2

問題是出現在中間的未轉義的連字符。使這樣的:當一個未轉義連字符顯示在它作爲一個範圍內的字符類的中間

replace(/[()\/.-]/gi, ''); 

  • )是ASCII 41
  • /爲ASCII 47
  • * ascii 42因此你的正則表達式否定*,因爲-作用於範圍中的所有字符41-47
2

連字符需要轉義,因爲它在字符類中的位置。您也可以刪除i(不區分大小寫)標誌,因爲您沒有包含正確的字符,所以不需要。

/[()\-\/.]/g 

注:在字符類的連字符有特殊的意義。您可以將其作爲課程的第一個或最後一個字符。在一些正則表達式實現中,你也可以直接放在範圍之後。如果將連字符放在其他任何位置,則需要在其前面加上反斜槓,以便將其添加到角色類中。

+0

謝謝猜猜會有更多的概念深入挖掘 – noob 2014-10-17 15:32:46