1. 程式人生 > >正則表示式(RegExp)的方法和字串的模式匹配方法

正則表示式(RegExp)的方法和字串的模式匹配方法

都能夠測試字串中是否存在指定格式的字元。兩種方法主要的區別在於,呼叫方法的物件和傳遞的引數,正則表示式的方法呼叫方法的物件是正則表示式,傳輸的引數是字串,而字串的模式匹配呼叫方法的物件是字串,傳遞的引數是正則表示式。

RegExp物件的方法:

  • exec():接收一個引數,即要應用模式的字串,返回包含第一個匹配項資訊的陣列;如果沒有匹配項,則返回null。返回的陣列包含兩個屬性:index和input,index表示匹配項在字串中的位置,input表示應用正則表示式的字串。

例:

var text = "cat,bat,sat,fat";
var pattern = /.at/g;
console.log
(pattern.exec(text)); //輸出為:['cat',index:0,input:'cat,bat,sat,fat'] console.log(pattern.exec(text)); //輸出為:['bat',index:4,input:'cat,bat,sat,fat']
  • test():接收一個字串引數,在模式與該引數匹配的情況下返回true,否則返回false。

例:

var text = "010-10086";
var pattern = /\d{3}-\d{5}/;
var flag = pattern.test(text);//true

String型別的模式匹配方法:

  • match()
    :接收一個引數,該引數要麼是一個正則表示式,要麼是一個RegExp物件。

例:

var text = "cat,bat,sat,fat";
var pattern = /.at/g;
console.log(text.match(pattern));
//輸出為:['cat','bat','sat','fat']
console.log(text.match(pattern));
//輸出為:['cat','bat','sat','fat']
  • search():接收一個引數,該引數為字串或RegExp物件指定的一個正則表示式,返回字串中第一個匹配項的索引,如果沒有找到索引,則返回-1。
    例:
var text = "cat,bat,sat,fat";
console.log(text.search(/at/));//1
  • replace():接收兩個引數,第一個引數可以是一個RegExp物件或一個字串,第二個引數可以是一個字串或一個函式。如果第一個引數是字串,那麼只會替換第一個子字串,想要替換所有子字串,唯一的方法就是提供一個正則表示式,而且要指定全域性(g)標誌。
    例:
var text = "cat,bat,sat,fat";
console.log(text.replace(/at/g,"ond"));
//輸出:cond,bond,sond,fond
  • split():基於指定的分隔符將一個字串分割成多個子字串,並將結果放在一個數組中。接收第二個可選引數,用於指定返回的陣列的大小。
    例:
var text = "cat,bat,sat,fat";
console.log(text.split(/[^\,]+/));
//輸出:["",",",",",",",""]
console.log(text.split(/[^\,]+/),2);
//輸出:["",","]