javascript正則表達式1

建立正則表達式
建立正則表達式和建立字符串相似,建立正則表達式提供了兩種方法,一種是採用new
運算符,另外一個是採用字面量方式。正則表達式

 

  
  
           
  
  
  1. var box = new RegExp('box'); //第一個參數字符串  
  2. var box = new RegExp('box''ig'); //第二個參數可選模式修飾符 

模式修飾符的可選參數數組

 

 

  
  
           
  
  
  1. var box = /box/; //直接用兩個反斜槓  
  2. var box = /box/ig; //在第二個斜槓後面加上模式修飾符 

2.測試正則表達式
RegExp 對象包含兩個方法:test()和exec(),功能基本類似,用於測試字符串匹配。test()
方法在字符串中查找是否存在指定的正則表達式並返回布爾值,若是存在則返回true,不存
在則返回false。exec()方法也用於在字符串中查找指定正則表達式,若是exec()方法執行成
功,則返回包含該查找字符串的相關信息數組。若是執行失敗,則返回null。瀏覽器

 

 

  
  
           
  
  
  1. /*使用new 運算符的test 方法示例*/ 
  2. var pattern = new RegExp('box''i'); //建立正則模式,不區分大小寫  
  3. var str = 'This is a Box!'//建立要比對的字符串  
  4. alert(pattern.test(str)); //經過test()方法驗證是否匹配 

 

  
  
           
  
  
  1. /*使用字面量方式的test 方法示例*/ 
  2. var pattern = /box/i; //建立正則模式,不區分大小寫  
  3. var str = 'This is a Box!';  
  4. alert(pattern.test(str)); 

 

  
  
           
  
  
  1. /*使用一條語句實現正則匹配*/ 
  2. alert(/box/i.test('This is a Box!')); //模式和字符串替換掉了兩個變量 

 

  
  
           
  
  
  1. /*使用exec 返回匹配數組*/ 
  2. var pattern = /box/i;  
  3. var str = 'This is a Box!';  
  4. alert(pattern.exec(str)); //匹配了返回數組,不然返回null 

3.使用字符串的正則表達式方法
除了test()和exec()方法,String 對象也提供了4 個使用正則表達式的方法。ide

 

 

  
  
           
  
  
  1. /*使用match 方法獲取獲取匹配數組*/ 
  2. var pattern = /box/ig; //全局搜索  
  3. var str = 'This is a Box!,That is a Box too';  
  4. alert(str.match(pattern)); //匹配到兩個Box,Box  
  5. alert(str.match(pattern).length); //獲取數組的長度 

 

  
  
           
  
  
  1. /*使用search 來查找匹配數據*/ 
  2. var pattern = /box/ig;  
  3. var str = 'This is a Box!,That is a Box too';  
  4. alert(str.search(pattern)); //查找到返回位置,不然返回-1 
PS:由於search 方法查找到即返回,也就是說無需g 全局

 

  
  
           
  
  
  1. /*使用replace 替換匹配到的數據*/ 
  2. var pattern = /box/ig;  
  3. var str = 'This is a Box!,That is a Box too';  
  4. alert(str.replace(pattern, 'Tom')); //將Box 替換成了Tom 

 

  
  
           
  
  
  1. /*使用split 拆分紅字符串數組*/ 
  2. var pattern = / /ig;  
  3. var str = 'This is a Box!,That is a Box too';  
  4. alert(str.split(pattern)); //將空格拆開分組成數組 

RegExp對象的靜態屬性測試

屬性 短名 含義
input $_ 當前被匹配的字符串
lastMatch $& 最後一個匹配字符串
lastParen $+ 最後一對圓括號內的匹配子串
leftContext $` 最後一次匹配前的子串
multiline $* 用於指定是否全部的表達式都用於多行的布爾值
rightContext $' 在上次匹配以後的子串

 

  
  
           
  
  
  1. /*使用靜態屬性*/ 
  2. var pattern = /(g)oogle/;  
  3. var str = 'This is google!';  
  4. pattern.test(str); //執行一下  
  5. alert(RegExp.input); //This is google!  
  6. alert(RegExp.leftContext); //This is  
  7. alert(RegExp.rightContext); //!  
  8. alert(RegExp.lastMatch); //google  
  9. alert(RegExp.lastParen); //g  
  10. alert(RegExp.multiline); //false 
PS:Opera 不支持input、lastMatch、lastParen 和multiline 屬性。IE 不支持multiline 屬
性。
全部的屬性可使用短名來操做
RegExp.input 能夠改寫成RegExp['$_'],依次類推。但RegExp.input 比較特殊,它還可
以寫成RegExp.$_。

 

 

  
  
           
  
  
  1. /*使用實例屬性*/ 
  2. var pattern = /google/ig;  
  3. alert(pattern.global); //true,是否全局了  
  4. alert(pattern.ignoreCase); //true,是否忽略大小寫  
  5. alert(pattern.multiline); //false,是否支持換行  
  6. alert(pattern.lastIndex); //0,下次的匹配位置  
  7. alert(pattern.source); //google,正則表達式的源字符串  
  8. var pattern = /google/g;  
  9. var str = 'google google google';  
  10. pattern.test(str); //google,匹配第一次  
  11. alert(pattern.lastIndex); //6,第二次匹配的位 
PS:以上基本沒什麼用。而且lastIndex 在獲取下次匹配位置上IE 和其餘瀏覽器有誤差,主要表如今非全局匹配上。lastIndex 還支持手動設置,直接賦值操做。
相關文章
相關標籤/搜索