JavaScript教程筆記(17)-正則表示式
阿新 • • 發佈:2019-01-07
JavaScript中正則表示式的功能由RegExp物件提供。
1 概述
正則表示式(Regular expression)是一種表達文字模式(即字串結構)的方法,有點像是字串的模板,常用來按照“指定模式”匹配文字。例如,可以用正則表示式定義好一個郵箱地址的模式,然後用它來檢查某個字串是否為有效的郵箱地址。
新建正則表示式有兩種方法。一種是使用字面量,以斜槓表示開始和結束。
var reg = /xyz/;
另一種是使用RegExp建構函式。
var reg = new RegExp('xyz');
上面兩種寫法等價。區別在於,第一種方法在編譯程式碼時,就會新建正則表示式,而第二種方法在執行時新建,所以前者的效果較高。另外,前者比較方便直觀,所以實際應用中,基本採用第一種方法定義正則表示式。
2 例項方法
2.1 RegExp.prototype.test()
test方法返回一個布林值,表示當前模式是否能匹配引數字串。
/cat/.test('cats and dogs') // true
上面程式碼驗證引數字串是否包含cat,結果為true。
2.2 RegExp.prototype.exec()
exec方法返回匹配結果。如果匹配,返回一個數組,陣列成員是匹配成功的子字串,如果不匹配,就返回null。
var s = '_x_x'; var r1 = /x/; var r2 = /y/; r1.exec(s) // ["x"] r2.exec(s) // null
上面程式碼中,正則物件r1匹配成功,所以返回一個數組,成員是匹配結果;正則物件r2匹配失敗,所以返回null。
3 匹配例項
正則表示式的規則比較複雜,下面以幾個例項來介紹。
3.1 檢查手機號碼
有效手機號碼的驗證規則是以1開頭的11位數字,編寫正則表示式如下:
function checkMobile(s) {
var reg = /^1\d{10}$/;
return reg.test(s);
}
checkMobile('13800132967') // true
checkMobile('123412341234') // false
上面的正則表示式reg中,各個特殊字元的含義如下。
- ^ 表示字串的開始位置
- $ 表示字串的結果位置
- \d 匹配0-9之間的任一數字,相當於[0-9]
- {10} 表示模式精確匹配10次
最終連起來,/^1\d{10}$/.test(s)的意思,就是引數s是否以1開頭,並且之後的10位數字都是0-9,如果是返回true,不是返回false。
注:本文適用於ES5規範,原始內容來自 JavaScript 教程,有修改。