WhereIsWelly ?

Thinking and life

常常在網頁上要對字串做一些過濾處理,
比較困難的可能會牽扯到一些特殊字元!@#$%^^&*()這些類似的討厭東西,
大部分都是使用 .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解釋 很受用:)

Leave a Reply