什麼是正則表達式
正則表達式(RegExp , regular expression) 用於確認字串是否符合所定義的規則。在 JavaScript 中,正規表達式也是物件,這些模式在 RegExp 的 exec 和 test 方法中,以及 String 的 match、replace、search 、split 等方法中被運用。
建立正規表達式
可透過下列兩種方法去建立一條正規表達式:
正規表達式字面值: 使用斜槓表示開始及結束。
或呼叫 RegExp 物件的建構函式,如下:
1
| var re = new RegExp('ab+c');
|
在進入規則語法之前,先介紹正則表達式的一個簡單的測試方法 test( )。test ( ) 方法用以表示參數字串是否符合正則表達式的字串格式。
撰寫正規表達模式
直接匹配 / / 內的字符,比如:/abc/ ,會符合僅僅字符 ‘abc’ 同時出現並按照這個順序的情形。
如果需要更多條件的匹配,比如搜尋一或多個 ‘b’,或者搜尋空格,會需要特殊字元的字符。
符合格式
1 2 3 4
| const exp = /^ab/;
exp.test('abc') exp.test('cab')
|
1 2 3 4
| const exp = /ab$/;
exp.test('abc') exp.test('cab')
|
- \d : 代表任意數字,也等同於 [0
9] 反之,\D 代表除了數字以外的字元,也等同於 [^09]
1 2 3 4
| const exp = /\d/;
exp.test('abc') exp.test('a23')
|
- \w : 代表所有字母、數字及底線,也等同於 [A-Za-z0-9_] ;\W 代表除了所有字母、數字及底線以外的字元,也等同於 [^A-Za-z0-9_]
1 2 3 4
| const exp = /\w/;
exp.test('a23_') exp.test('?')
|
符號
1 2 3 4
| const exp = /a|b/;
exp.test('aac') exp.test('ddd')
|
- -: 連字符,代表連續的字符,如 數字 1 - 3 可以寫成 [1-3],英文 a-z 寫成 [a-z];
1 2 3 4
| const exp = /[1-3]/;
exp.test('2') exp.test('5')
|
修飾符
1 2
| const exp = /HELLO/i; console.log(exp.test('hello'));
|
出現次數
- {n} : 使用大括號指定次數,{n} 只有一個數字代表指定次數;{n,m} 兩個數字時,代表介於 n~m 次;省略其中一個數字代表只指定下限或上限,例如 {n,} 代表至少 n 次,{,m} 代表低於 m 次。
1 2 3 4
| const exp = /a{2}/;
exp.test('aab') exp.test('a')
|
1 2 3 4
| const exp = /b*/;
exp.test('bbb') exp.test('ccc')
|
1 2 3 4
| const exp = /b?/;
exp.test('bbb') exp.test('ccc')
|
1 2 3 4
| const exp = /b+/;
exp.test('bbb') exp.test('ccc')
|
字串方法
- match(): 回傳比對後符合的結果陣列,若無符合對象,回傳 null
1 2 3 4 5
| const string = 'hello world'; const exp = /\w/g;
string.match(exp);
|
- search():回傳搜尋第一個比對後符合結果的位置,如果沒有任何符合結果,就回傳 -1;
1 2 3 4 5 6
| const string = 'hello world'; const exp = /h/; const exp2 =/\d/;
string.search(exp); string.search(exp2);
|
- replace(): 替換比對後符合的值。接收兩個參數,第一個參數爲正則表達式,第二個參數爲欲替換的值。
1 2 3 4 5 6
| const string = 'hello world'; const exp = /\d/; const exp2 =/\w/;
string.replace(exp, 'a'); string.replace(exp2, 'a');
|
如果要比對全部就加上 g
1 2
| const exp3 =/\w/g; string.replace(exp3, 'a');
|