1. 程式人生 > >JavaScript教程筆記(17)-正則表示式

JavaScript教程筆記(17)-正則表示式

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 教程,有修改。