怎樣建立正規表示式?
建立正規表示式和建立字串類似,建立正規表示式提供了兩種方法,一種是採用new運算子,另一個是採用字面量方式。
1.兩種建立方式
var box = new RegExp('box'); //第一個引數字串
var box = new RegExp('box', 'ig'); //第二個引數可選模式修飾符
模式修飾符的可選引數
參 數 | 含 義 |
i | 忽略大小寫 |
g | 全域性匹配 |
m | 多行匹配 |
var box = /box/; //直接用兩個反斜槓
var box = /box/ig; //在第二個斜槓後面加上模式修飾符
2.測試正規表示式
RegExp物件包含兩個方法:test()和exec(),功能基本相似,用於測試字串匹配。test()方法在字串中查詢是否存在指定的正規表示式並返回布林值,如果存在則返回true,不存在則返回false。exec()方法也用於在字串中查詢指定正規表示式,如果exec()方法執行成功,則返回包含該查詢字串的相關資訊陣列。如果執行失敗,則返回null。
RegExp物件的方法
方 法 | 功 能 |
test | 在字串中測試模式匹配,返回true或false |
exec | 在字串中執行匹配搜尋,返回結果陣列 |
/*使用new運算子的test方法示例*/
var pattern = new RegExp('box', 'i'); //建立正則模式,不區分大小寫
var str = 'This is a Box!'; //建立要比對的字串
alert(pattern.test(str)); //通過test()方法驗證是否匹配
/*使用字面量方式的test方法示例*/
var pattern = /box/i; //建立正則模式,不區分大小寫
var str = 'This is a Box!';
alert(pattern.test(str));
/*使用一條語句實現正則匹配*/
alert(/box/i.test('This is a Box!')); //模式和字串替換掉了兩個變數
/*使用exec返回匹配陣列*/
var pattern = /box/i;
var str = 'This is a Box!';
alert(pattern.exec(str)); //匹配了返回陣列,否則返回null
3.使用字串的正規表示式方法
除了test()和exec()方法,String物件也提供了4個使用正規表示式的方法。
String物件中的正規表示式方法
方 法 | 含 義 |
match(pattern) | 返回pattern中的子串或null |
replace(pattern, replacement) | 用replacement替換pattern |
search(pattern) | 返回字串中pattern開始位置 |
split(pattern) | 返回字串按指定pattern拆分的陣列 |
/*使用match方法獲取獲取匹配陣列*/
var pattern = /box/ig; //全域性搜尋
var str = 'This is a Box!,That is a Box too';
alert(str.match(pattern)); //匹配到兩個Box,Box
alert(str.match(pattern).length); //獲取陣列的長度
/*使用search來查詢匹配資料*/
var pattern = /box/ig;
var str = 'This is a Box!,That is a Box too';
alert(str.search(pattern)); //查詢到返回位置,否則返回-1
PS:因為search方法查詢到即返回,也就是說無需g全域性
/*使用replace替換匹配到的資料*/
var pattern = /box/ig;
var str = 'This is a Box!,That is a Box too';
alert(str.replace(pattern, 'Tom')); //將Box替換成了Tom
/*使用split拆分成字串陣列*/
var pattern = / /ig;
var str = 'This is a Box!,That is a Box too';
alert(str.split(pattern)); //將空格拆開分組成陣列
RegExp物件的靜態屬性
屬 性 | 短 名 | 含 義 |
input | $_ | 當前被匹配的字串 |
lastMatch | $& | 最後一個匹配字串 |
lastParen | $+ | 最後一對圓括號內的匹配子串 |
leftContext | $` | 最後一次匹配前的子串 |
multiline | $* | 用於指定是否所有的表示式都用於多行的布林值 |
rightContext | $' | 在上次匹配之後的子串 |
/*使用靜態屬性*/
var pattern = /(g)oogle/;
var str = 'This is google!';
pattern.test(str); //執行一下
alert(RegExp.input); //Thisis google!
alert(RegExp.leftContext); //Thisis
alert(RegExp.rightContext); //!
alert(RegExp.lastMatch); //google
alert(RegExp.lastParen); //g
alert(RegExp.multiline); //false
PS:Opera不支援input、lastMatch、lastParen和multiline屬性。IE不支援multiline屬性。
所有的屬性可以使用短名來操作
RegExp.input可以改寫成RegExp['$_'],依次類推。但RegExp.input比較特殊,它還可以寫成RegExp.$_。
RegExp物件的例項屬性
屬 性 | 含 義 |
global | Boolean值,表示g是否已設定 |
ignoreCase | Boolean值,表示i是否已設定 |
lastIndex | 整數,代表下次匹配將從哪裡字元位置開始 |
multiline | Boolean值,表示m是否已設定 |
Source | 正規表示式的源字串形式 |
/*使用例項屬性*/
var pattern = /google/ig;
alert(pattern.global); //true,是否全域性了
alert(pattern.ignoreCase); //true,是否忽略大小寫
alert(pattern.multiline); //false,是否支援換行
alert(pattern.lastIndex); //0,下次的匹配位置
alert(pattern.source); //google,正規表示式的源字串
var pattern = /google/g;
var str = 'google google google';
pattern.test(str); //google,匹配第一次
alert(pattern.lastIndex); //6,第二次匹配的位
PS:以上基本沒什麼用。並且lastIndex在獲取下次匹配位置上IE和其他瀏覽器有偏差,主要表現在非全域性匹配上。lastIndex還支援手動設定,直接賦值操作。
相關文章
- 建構函式方式建立正規表示式函式
- JavaScript建立正規表示式JavaScript
- “正規表示式”應當稱為“規則表示式”
- 正規表示式
- 正規表示式.
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 正規表示式基本規則
- 常用正規表示式
- JavaScript 正規表示式JavaScript
- MySQL正規表示式MySql
- 正規表示式(java)Java
- SQL正規表示式SQL
- python正規表示式Python
- 正規表示式合集
- 正規表示式(一)
- Python 正規表示式Python
- Python——正規表示式Python
- PHP正規表示式PHP
- 正規表示式概括
- javascript正規表示式JavaScript
- java正規表示式Java
- Shell正規表示式
- 正規表示式 教程
- 正規表示式 【四】
- 正規表示式匹配
- Python:正規表示式Python
- php –正規表示式PHP
- 【Linux】正規表示式Linux
- 【JavaScript】正規表示式JavaScript
- URL正規表示式
- 正規表示式 split()
- 初探正規表示式
- 正規表示式 test()
- 正規表示式(?!)作用
- 正規表示式 {n,}
- 【java】正規表示式Java
- 正規表示式同時匹配中英文及常用正規表示式
- JS常用正規表示式及驗證時間的正規表示式JS