5.2 正則表達式 RegExp

距離5.1 有一個星期了,這一個星期主要是花在了練習CSS上,仿寫了一個淘寶首頁,今天接着看高級程序設計部分:

1.使用字面量定義

每個正則表達式可以帶有一個或多個標誌,用以表明正則表達式的行爲:
g:表示全局,應用於全局,而不是發現第一個匹配時停止
i:表示不區分大小寫
m:表示多行模式,即到達一行文本末時還會繼續查找下一行。
正則表達式的元字符:

  1. ( [ { \ ^ $ | }? * + . ] )
  2. 數字鍵:$ ^ * ()+
  3. 括號建:{ } [] | \ . ?

例如:

var Str = 'tyt12tyt';
var pattern1 = /[ty]t/; //匹配第一個 tt 或yt
var pattern2 = /\[ty\]t/; //匹配第一個 [ty]t
var pattern3 = /.ty/;//匹配以ty結尾的3個字符, . 表示位於ty之前的任意一個可以構成匹配想的字符

^ 匹配字符串的開始位置; $ 匹配字符串的結束位置;* 匹配前面子表達式0次或多次,相當於{0,}; + 匹配前面子表達式1次或多次;?匹配前面子表達式0次或1次
\s 匹配空格符 製表符 和其他Unicode空白符
在這裏插入圖片描述
在這裏插入圖片描述

2.使用構造函數 RegExp

var pattern1 = new RegExp(‘ty’,‘g’);
由於構造函數的模式參數是字符串,所以在某些情況下要對字符進行雙層轉義 \ ,所有元字符必須雙重轉義。
使用正則表達式字面量和使用RegExp 構造函數創建的正則表達式不一樣。在ECMA3中,正則表達式字面量時鐘共享一個RegExp實例,而使用RegExp創建的每一個RegExp都是新實例

var re = null,
i;
for (i=0; i < 10; i++){
re = /cat/g;
re.test("catastrophe");
}
for (i=0; i < 10; i++){
re = new RegExp("cat", "g");
re.test("catastrophe");
}

在第一個循環中,即使是循環體中指定的,但實際上只爲/cat/創建了一個 RegExp 實例。由於實
例屬性(下一節介紹實例屬性)不會重置,所以在循環中再次調用 test()方法會失敗。這是因爲第一
次調用 test()找到了"cat",但第二次調用是從索引爲 3 的字符(上一次匹配的末尾)開始的,所以
就找不到它了。由於會測試到字符串末尾,所以下一次再調用 test()就又從開頭開始了。
第二個循環使用 RegExp 構造函數在每次循環中創建正則表達式。因爲每次迭代都會創建一個新的
RegExp 實例,所以每次調用 test()都會返回 true。
ECMAScript 5 明確規定,使用正則表達式字面量必須像直接調用 RegExp 構造函數一樣,每次都創
建新的 RegExp 實例。 IE9+、 Firefox 4+和 Chrome 都據此做出了修改。

3.RegExp 實例屬性:

global :布爾值,表示是否設置了g標誌
ignoreCase : 布爾值,表示是否設置了i標誌
lastIndex : 整數,表示開始搜索下一匹配項的字符位置,從0算起
multiline:布爾值,表示是否設置了m標誌
source: 正則表達式的字符串表示,按照字面量形式而非傳入構造函數中的字符串模式返回

var pattern1 = /\[bc\]at/i;
alert(pattern1.global); //false
alert(pattern1.ignoreCase); //true
alert(pattern1.multiline); //false
alert(pattern1.lastIndex); //0
alert(pattern1.source); //"\[bc\]at"
4.RegExp 實例方法:

主要對象方法是 exec() ,它接受一個參數,即要應用模式的字符串,然後返回包含第一個匹配信息項的信息的數組,或者在滅有的情況下返回null。返回的數組包含兩個額外屬性,index和input,index表示匹配項在字符串中的位置,input表示應用正則表達式的字符串。數組中,第一項是與整個模式匹配的字符串,其他項是與模式中的捕獲組匹配的字符串。
第二個方法是 test(),接受一個字符串參數,在匹配的情況下返回true,反之返回false;京城被用在if語句中:

var text = "000-00-0000";
var pattern = /\d{3}-\d{2}-\d{4}/;
if (pattern.test(text)){
alert("The pattern was matched.");
}

5.使用正則表達式,可以:

 測試字符串的某個模式。例如,可以對一個輸入字符串進行測試,看在該字符串是否存在一個電話號碼模式或者一個信用卡號碼模式,這稱爲數據有效性驗證。
 替換文本。可以在文檔中使用一個正則表達式來表示特定文字,然後將其全部刪除或者替換爲別的文字。
 根據模式匹配從字符串中提取一個子字符串。可以用來在文本或輸入字段中查找特定文字

謝謝指導,希望給爲指導下我這個小菜鳥,留下足跡,留下贊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章