[JavaScript] 使用Regular Expression 過濾 空白/特殊字元 的字串
常常在網頁上要對字串做一些過濾處理,
比較困難的可能會牽扯到一些特殊字元!@#$%^^&*()這些類似的討厭東西,
大部分都是使用 .replace這個function來達成
function Trim(InputString) { //去除字串左右兩邊的空白 return InputString.replace(/^\s+|\s+$/g, ""); //使用方式為replace(要被換掉的字串,要取代的字串) //這裡面我們搭配使用了Regular Expression的方式 /搜尋的字串/g 來搜尋"要被換掉的字串" }
Regular Expression的部分 : /^\s+|\s+$/g
所以這邊我們要搜尋字串的條件為 ^,\s,+,|,\s,+,$
我們拆開來看
1.^
寫在 pattern 第一個位置時 : 表示其後一符號必須出現在字串開頭的位置。
寫在 pattern 中間位置時 : 則為否定之意,表示字串中不可有 ^ 之後一符號的內容
2.\s 則代表空白的意思(space)
3.+
表示字串中 有 1 到無數個其前一符號的內容。
在這邊意思則為字串中有一個或以上的 “空白” 符號就是符合敘述了,因為前一符號為\s代表空白。
4.|
這就和我們一般的理解比較像一點,是指符合在此符號左邊或右邊的敘述都算是符合。”或”的意思。
在這邊代表符合前面條件 ^\s+ 或者是 後面條件 \s+$ 都算是符合整個敘述。
5.$
寫在 pattern 最後一個位置時,表示其 前一符號必須出現在字串尾端的位置。寫在 pattern 中時無特別意義。
\s+和前面都相同
差異點是 $ 符號,代表這次我們要搜尋的條件是接在字串尾端的空白字元。
所以合起來看就是: 符合 開頭的一個或N個空白字元的字串 或 在尾端的一個或N個含有空白字元 的字串找出來取代成replace後面的 “”
/g意思我沒有查得很清楚,大概就是一個Global replacement的意思。 固定用法。
所以以下還有幾個範例
InputString.replace(/^\s+/g,"").replace(/\s$+/g,""); //代表去除左邊以及右邊的空白,和我們的應用相同,我們用"|"來搜尋同時符合這兩個條件的字串 //這樣代表先把其中一個取代掉,在取代另外一個。 InputString.replace(/^\s+/g,""); //分開來看就是這樣 刪除開頭空白 InputString.replace(/\s$+/g,""); //刪除結尾空白
這超容易忘記的
還有好多規則,以上資料由下面這兩個網站整理而來
http://my.oschina.net/liuhui1990/blog/51912
http://blog.roodo.com/rocksaying/archives/2670695.html
尤其是第二個的詳細常用reg exp解釋 很受用:)