1.作用
1.1.測試字符串的某個模式(電話號碼模式或一個信用卡號碼).
1.2.替換文本.
1.3.根據模式匹配從字符串中提取一個子字符串。可以用來在文本或輸入字段中查找特定文字
2.語法 由普通字符(例如字符 a到 z)以及特殊字符(稱爲元字符)組成的文字模式
1.量詞
? 零次或一次
* 零次或多次
+ 一次或多次
{n}匹配n次 {n,}至少n次 {n,m} n到m次 (m>n).
2.預定義類(系統已經做好了的.)
\s 匹配一個空白字符 [ \n\r\t\f\x0B]
\w 數字,字母,下劃線 [a-zA-Z0-9_]
\d 數字 [0-9]
\S 匹配一個非空白字符 [^ \n\r\t\f\x0B]
\W 非數字,字母,下劃線 [^a-zA-Z0-9_]
\D 非數字 [^0-9]
3.選項標誌 可以組合使用.
g 全文查找.
i 忽略大小寫.
m 多行查找.
4.其他
\ 轉義字符
^ 匹配輸入字符串的開始位置. [^ ]取反.
$ 匹配輸入字符串的結束位置.
. 一個任意字符.
5.兩種聲明方式
1,new 一個RegExp
var reg = new RegExp(); RegExp是一個對象,和Array一樣
var reg = new RegExp("a","gi"); 匹配所有的a或A
2,字面量的聲明方式/\d+/ /[\u4e00-\u9fa5]{2,}/驗證漢字
3.正則表達式對象的方法及使用
1.test,返回一個 Boolean值,它指出在被查找的字符串中是否存在模式。如果存在則返回 true,否則就返回 false。 reg.test(str);
2.exec,用正則表達式模式在字符串中運行查找,並返回包含該查找結果的一個數組。[只要匹配的到的話就直接取出bin返回]reg.exec(str);
3.compile,把正則表達式編譯爲內部格式,從而執行得更快。
4.match,它就是將所有匹配的內容,以數組的形式全部返回.str.match(reg);
5.元字符匹配正則表達式本身時,必須對這些元字符轉義. //????( [ { \ ^ $ | ) ? * + .
var re = /\?/;//將匹配?
re = new RegExp("\\?");//正確,將匹配?//雙重轉義
脫字符 ^,$ var reg = /^as/gi;//^表示必須要以as開頭.
6.簡單類(字符類) var re = /[abc123]/;//將匹配abc123這6個字符中一個只要有一個就可以了
7.反向類 re = /[^abc]/;//將匹配除abc之外的一個字符
8.範圍類 re = /[a-z]/;//將匹配小寫a-z 26個字母
9.組合類 re = /[a-z0-9A-Z_]/;//將匹配字母,數字和下劃線
10.預定義類. \s,\S \w,\W \d,\D
分組 var reg = /^([a-z]+)(\s+)\d+/;
創建的兩種方式
1.var reg = new RegExp('as','gi');
2.var reg = /as/gi;
其他
1.replace() 替換 str.replace(/^-+/g,'*') str.replace(/\s+/g,'')去空格.
2.split() 拆分 str.split(/[^\d]/)對數字進行拆分.
3.search(); 找位置str.search(/\d/),找數字出現的位置,
4.str.indexOf(1) 找位置 //不能放正則表達式
4.貪婪量詞與惰性量詞
1.貪婪量詞:如果是整個匹配就直接將全部的返回,要是整體不匹配就從後往前匹配,直到碰到不匹配的,
就將匹配到的返回,繼續匹配剩下的.(+,?,*,{n},{n,},{n,m});
var str = "abb#asdfdbbbsaiouisbbb";
var reg1 = /\w+bbb/; //\w+bbb表示一個或多個字母或數字,下劃線加上bbb.
//alert(reg1.exec(str)+"|"+"\n"+str.match(reg1));//asdfdbbbsaiouisbbb //匹配了繼續匹配剩下的.
2.惰性量詞:???它首先將第一個字符當成一個匹配,如果成功則退出,如果失敗,則測試前兩個字符,
依些增加,直到遇到合適的匹配爲止.(+?,??,*?,{n}?,{n,}?,{n,m});
var str = "absdbas*dfdbbbsaisdfouisbbb";
var reg1 = /\w+?bbb/; //-匹配到了就不在匹配了
//alert(reg1.exec(str)+"|"+"\n"+str.match(reg1));//dfdbbb