正則表達式

什么是正則表達式禁筏?
如何創(chuàng)建正則表達式
正則表達式常用的方法
字符串中的正則表達式
常用的正則表達式
假設(shè)用戶需要在HTML表單中填寫姓名、地址擂橘、出生日期等,那么在將表單提交到服務(wù)器進一步處理前忌傻,JavaScript程序會檢查表單以確認(rèn)用戶確實輸入了信息并且這些信息是符合要求的。
一搞监、什么是正則表達式
當(dāng)檢索某個文本時芯勘,可以使用一種模式來描述要檢索的內(nèi)容。
JavaScript中的正則表達式就是RegExp
二腺逛、如何創(chuàng)建一個正則表達式
1荷愕、構(gòu)造函數(shù)法

構(gòu)造函數(shù)法

參數(shù)
含義
g
全局匹配
i
忽略大小寫

2、字面量法

字面量法

三棍矛、RegExp類型中的方法
1安疗、test()
作用:檢索字符串中指定的值。檢索正則表達式中所描述的模式是否存在于字符串中够委。存在返回 true 否則 返回false;
返回值:true /false

test

2.exec()
作用:檢索字符串中指定的值荐类。
返回值:被找到的值,沒有找到會返回null

exec

如果正則表達式使用了模式修飾符“g”茁帽,exec()的工作原理:
找到第一個 "e"玉罐,并存儲其位置
如果再次運行 exec(),則從存儲的位置開始檢索潘拨,并找到下一個 "e"吊输,并存儲其位置。

實例1
實例2

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ù)字

匹配單個字符與數(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\w
gle/; //\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$/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喇完,一起剝皮案震驚了整個濱河市伦泥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锦溪,老刑警劉巖不脯,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刻诊,居然都是意外死亡防楷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門则涯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來复局,“玉大人,你說我怎么就攤上這事粟判∫诨瑁” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵档礁,是天一觀的道長龙优。 經(jīng)常有香客問我,道長事秀,這世上最難降的妖魔是什么彤断? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮易迹,結(jié)果婚禮上宰衙,老公的妹妹穿的比我還像新娘。我一直安慰自己睹欲,他們只是感情好供炼,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窘疮,像睡著了一般袋哼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闸衫,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天涛贯,我揣著相機與錄音,去河邊找鬼蔚出。 笑死弟翘,一個胖子當(dāng)著我的面吹牛虫腋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稀余,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼悦冀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了睛琳?” 一聲冷哼從身側(cè)響起盒蟆,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎师骗,沒想到半個月后历等,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡丧凤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年募闲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愿待。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡浩螺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仍侥,到底是詐尸還是另有隱情要出,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布农渊,位于F島的核電站患蹂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏砸紊。R本人自食惡果不足惜传于,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望醉顽。 院中可真熱鬧沼溜,春花似錦、人聲如沸游添。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唆涝。三九已至找都,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間廊酣,已是汗流浹背能耻。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嚎京。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓嗡贺,卻偏偏與公主長得像隐解,于是被迫代替她去往敵國和親鞍帝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 正則表達式的元字符是包含特殊含義的字符煞茫,它們有一些特殊的功能帕涌,可以控制匹配模式的方式,反斜杠后的元字符失去其特殊含...
    Miss____Du閱讀 1,591評論 0 6
  • 正則表達式是一個描述字符模式的對象续徽,ECMAScript的RegExp類表示正則表達式蚓曼。String與RegExp...
    Miss____Du閱讀 806評論 0 4
  • RegExp 三大方法本文的RegExp采用直接量語法表示:/pattern/attributes。attribu...
    恩德_b0c2閱讀 464評論 0 0
  • 9.19--9.23 第7章 正則表達式 正則表達式是一個拆分字符串并查詢相關(guān)信息的過程钦扭。 推薦練習(xí)網(wǎng)站: js ...
    如201608閱讀 1,035評論 0 4
  • 聽說最近王者新出了一個英雄纫版,叫什么“鎧”,我很想買客情,可是沒錢其弊,很遺憾。但還有三天時間努力膀斋,加油哦梭伐!有沒有朋友一起開黑呢?
    謙少END閱讀 136評論 0 1