什么是正則表達式禁筏?
如何創(chuàng)建正則表達式
正則表達式常用的方法
字符串中的正則表達式
常用的正則表達式
假設(shè)用戶需要在HTML表單中填寫姓名、地址擂橘、出生日期等,那么在將表單提交到服務(wù)器進一步處理前忌傻,JavaScript程序會檢查表單以確認(rèn)用戶確實輸入了信息并且這些信息是符合要求的。
一搞监、什么是正則表達式
當(dāng)檢索某個文本時芯勘,可以使用一種模式來描述要檢索的內(nèi)容。
JavaScript中的正則表達式就是RegExp
二腺逛、如何創(chuàng)建一個正則表達式
1荷愕、構(gòu)造函數(shù)法
參數(shù)
含義
g
全局匹配
i
忽略大小寫
2、字面量法
三棍矛、RegExp類型中的方法
1安疗、test()
作用:檢索字符串中指定的值。檢索正則表達式中所描述的模式是否存在于字符串中够委。存在返回 true 否則 返回false;
返回值:true /false
2.exec()
作用:檢索字符串中指定的值荐类。
返回值:被找到的值,沒有找到會返回null
如果正則表達式使用了模式修飾符“g”茁帽,exec()的工作原理:
找到第一個 "e"玉罐,并存儲其位置
如果再次運行 exec(),則從存儲的位置開始檢索潘拨,并找到下一個 "e"吊输,并存儲其位置。
3铁追、compile()
作用:用于改變RegExp;既可以修改模式季蚂,也可以增加或者刪除或者修改模式修飾符
四、String類型中的正則表達式的應(yīng)用
String類型提供了四個使用正則表達式的方法:
str.match(parrent)
返回parent中的子串或者為null
str.search(parrent)
1琅束、返回字符串中parrent的開始的位置
2扭屁、查找到返回位置,否則返回-1涩禀,值為10
3料滥、需要注意的是,因為search方法找到即返回,也就是說無需g全局。
str.replace(parrent,replacement)
將出現(xiàn)在str中的parrent用replacement代替
str.split(parrent)
將字符串按照指定的parent的拆分艾船,返回拆分后的數(shù)組
五葵腹、正則表達式的元字符
匹配單個字符與數(shù)字
錨字符
元字符
含義
^ 行首匹配
$ 行尾匹配
匹配重復(fù)的字符
元字符 含義
x? 匹配0個或者1個x
x* 匹配0個或者任意多個x
x+ 匹配至少1個x
(xyz)+ 匹配至少一個xyz
x{m,n} 匹配至少m個至多n個x
【練習(xí)題】
/使用點元字符/
var pattern = /g..gle/; //.匹配一個任意字符
var str = 'google';
alert(pattern.test(str));//true
/重復(fù)匹配/
var pattern = /g.gle/; //.匹配0 個一個或多個
var str = 'google';
alert(pattern.test(str));//true
/使用字符類匹配/
var pattern = /g[a-zA-Z_]gle/; //[a-z]表示任意個a-z中的字符
var str = 'google';
alert(pattern.test(str));//true
var pattern = /g[^0-9]gle/; //[^0-9]表示任意個非0-9的字符
var str = 'google';
alert(pattern.test(str));//true
var pattern = /[a-z][A-Z]+/; //[A-Z]+表示A-Z一次或多次
var str = 'gOOGLE';
alert(pattern.test(str));//true
/使用元符號匹配/
var pattern = /g\wgle/; //\w匹配任意多個所有字母數(shù)字_
var str = 'google';
alert(pattern.test(str));//true
var pattern = /google\d/; //\d*匹配任意多個數(shù)字
var str = 'google444';
alert(pattern.test(str));//true
var pattern = /\D{7,}/; //\D{7,}匹配至少7 個非數(shù)字
var str = 'google8';
alert(pattern.test(str));//false
/*使用錨元字符匹配*/
var pattern = /^google$/; //^從開頭匹配,$從結(jié)尾開始匹配
var str = 'google';
alert(pattern.test(str));//true
var pattern = /goo\sgle/; // \s可以匹配到空格
var str = 'goo gle';
alert(pattern.test(str));//true
/使用或模式匹配/
var pattern = /google|baidu|bing/; //匹配三種其中一種字符串
var str = 'google';
alert(pattern.test(str));//true
/使用分組模式匹配/
var pattern = /(google){4,8}/; //匹配分組里的字符串4-8 次
var str = 'googlegoogle';
alert(pattern.test(str));//false
var pattern = /8(.*)8/; //獲取8..8 之間的任意字符
var str = 'This is 8google8';
str.match(pattern);//8google8
alert(RegExp.$1); //得到第一個分組里的字符串內(nèi)容
var pattern = /8(.)8/;
var str = 'This is 8google8';
var result = str.replace(pattern,'<strong>$1</strong>'); //得到替換的字符串輸出
document.write(result);//This is google
var pattern = /(.)\s(.)/;
var str = 'google baidu';
var result = str.replace(pattern, '$2 $1'); //將兩個分組的值替換輸出
document.write(result);//baidu google
/匹配以英文字母開頭丽声,以四位數(shù)字結(jié)尾的字符串*/
var pattern = /^[a-z]+\s[0-9]{4}$/i;
var str = 'google 2012';
alert(pattern.exec(str)); //返回整個字符串
/以字母開頭礁蔗,整個字符串全部是字符串,至少有一個字母字符串
var pattern = /^[a-z]+/i; //只匹配字母
var str = 'google 2012';
alert(pattern.exec(str)); //返回google
var pattern = /^([a-z]+)\s([0-9]{4})$/i; //使用分組
var str = 'google 2012';
alert(pattern.exec(str)[0]); //google 2012
alert(pattern.exec(str)[1]); //google
alert(pattern.exec(str)[2]); //2012
/使用特殊字符匹配/
var pattern = /.[/b]/; //特殊字符雁社,用\符號轉(zhuǎn)義即可
var str = '.[/b]';
alert(pattern.test(str));
/使用換行模式/
var pattern = /^\d+/mg; //啟用了換行模式
var str = '1.baidu\n2.google\n3.bing';
var result = str.replace(pattern, '#');
alert(result);
六、常用的正則表達式
1晒骇、檢查郵政編碼
var pattern = /[0-9]{5}/; //共6 位數(shù)字
var str = '224000';
alert(pattern.test(str));
2霉撵、檢查文件壓縮包
var pattern = /[\w]+.zip|rar|gz/; //\w 表示所有數(shù)字和字母加下劃線
var str = '123.zip'; //.表示匹配.磺浙,后面是一個選擇
alert(pattern.test(str));
3、刪除多余空格
var pattern = /\s/g; //g 必須全局徒坡,才能全部匹配
var str = '111 222 333';
var result = str.replace(pattern,''); //把空格匹配成無空格
alert(result);//111222333
4撕氧、刪除空格
var pattern = /^\s+/;
var str = ' goo gle ';
alert(str+" "+str.length);//" goo gle " 8
var result = str.replace(pattern, '');
alert(result+" "+result.length);
pattern = /\s+$/;
result = result.replace(pattern, '');
alert(result+" "+result.length);
pattern = /\s+/g;
result = result.replace(pattern, '');
alert(result+" "+result.length);
5、簡單的電子郵件驗證163郵箱
var parrent = /^[a-zA-Z_]\w*@163.com$/