Javascript中的RegExp類型

#學習JS——Regexp類型正則表達式

##1. 基本語法 正則表達式字面量var expression = / pattern / flagsexpress

pattern:任何簡單或複雜的正則表達式數組

flags:一個或多個標誌以標明正則表達式的行爲函數

  • g:表示全局模式,被應用於全部字符串,並不是在發現第一個匹配項時中止
  • i:不區分大小寫
  • m:多行模式,到達文本一行末尾還會搜索下一行匹配項

eg:學習

var pattern1 = /at/g;   /*匹配字符串中全部'at'實例*/
var pattern2 = /[bc]at/g;	/*全部'bat','cat'實例*/
var pattern3 = /.at/g;	/*匹配全部以'at'結尾的實例*/

RegExp構造函數code

`var pattern2 = new RegExp("[bc]at", "i");字符串

RegExp函數接受兩個字符串參數,第一個表示Pattern,第二個表示flags,在某些狀況,要對字符串雙重轉義。input

##2. 實例屬性io

  • global:返回布爾值,表示是否設置了g標誌
  • ignoreCase:返回布爾值,表示是否設置了i標誌
  • multiline:返回布爾值,表示是否設置了m標誌
  • lastIndex:表示下一次查找的開始位置,從0開始
  • source:正則表達式的字符串表示

eg:ast

var pattern = /\[bc\]at/i;

alert(pattern.globle); //false
alert(pattern.ignoreCase); //true
alert(pattern.multiline); //false
alert(pattern.lastIndex); //0
alert(pattern.sourse); // "/\[bc\]at/i"

##3. 實例方法 exec()方法

exce()接受要應用模式的字符串,而後返回包含第一個匹配項的信息的數組;或者在沒有匹配項的狀況下返回null。其中,返回的數組具備兩個屬性

  • input:表示應用正則表達式的字符串
  • index:表示匹配項在字符串中的位置

在數組中。第一項是與整個模式匹配的字符串,其餘項是與模式中的捕獲組匹配的字符串(沒有捕獲組,數組只包含一項)

var text = "mom and dad and baby";
var pattern = /mom( and dad( and baby)?)?/gi

var matches = parttern.exce(text);
alert(matches.input);  //"mom and dad and baby"
alert(matches.index);  //0
alert(matches.[0]);  //"mom and dad and baby"
alert(matches)[1]);  //" and dad and baby"
alert(matches)[2]);  //" and baby"

對於exec()方法,即便設置了全局標誌,每次只會返回一個匹配項。 不設置全局標誌時。在一個字符串上屢次調用exec()會始終返回第一個匹配項的信息,設置全局標誌時,每次調用exec()則都會在字符串中繼續查找新的匹配項。

var text = "cat bat hat";
var pattern1 = /.at/i;

var matches = pattern1.exec(text);
alert(matches.index);  //0;
alert(matches[0]);  //"cat";
alert(pattern1.lastIndex);  //0;

var matches = pattern1.exec(text);
alert(matches.index);  //0;
alert(matches[0]);  //"cat";
alert(pattern1.lastIndex);  //0;

var pattern2 = /.at/gi;

var matches = pattern1.exec(text);
alert(matches.index);  //0;
alert(matches[0]);  //"cat";
alert(pattern1.lastIndex);  //3;

var matches = pattern1.exec(text);
alert(matches.index);  //4;
alert(matches[0]);  //"bat";
alert(pattern1.lastIndex);  //7;

全局模式下,每次調用exec()都會返回字符串中的下一個匹配項,直到搜索到末尾

test()方法

接受一個字符串參數,在模式與該參數匹配時返回true,不然false

var text = "000-00-0000"
var pattern = /\d{3}-\d{2}-\d{4}/;

if(pattern.test(text){
   alert("the partern was matched");
}

經常使用來驗證用戶輸入

相關文章
相關標籤/搜索