正則表達(dá)式

正則表達(dá)式介紹:

//正則表達(dá)式不是js中的獨有功能
//其他的一些語言中也有正則的實現(xiàn)方式并徘,當(dāng)我們在查看關(guān)于正則的資料時遣钳,要確定你看的內(nèi)容是不是js所使用的。
//正則表達(dá)式的作用:用于對字符串進(jìn)行操作(匹配麦乞,替換蕴茴,提取)
//正則的使用不僅限于編程中:
//有一天我想要看片了,可能會去一些論壇網(wǎng)站上找資源
//突然我在xxx論壇發(fā)現(xiàn)了一個我心儀已久的種子
//這個大神發(fā)了一個帖子姐直,想要種子的人倦淀,留下你的郵箱
//小明:大神你好,關(guān)注你很久声畏,你共享了很多的內(nèi)容撞叽,我都非常喜歡,么么噠插龄,我得郵箱是xiaoming@163.com
//小紅:前兩天我老公說想看這個片子,我要今天晚上跟他一起看愿棋,我得郵箱是xiaohong@sina.com
//李雷:不廢話,直接六郵箱 lilei@xxx.gov.com.cn
//我:好人一生平安,郵箱是wuyou@qq.com
//如果這個大神會正則表達(dá)式的話均牢,只需要簡單的一行代碼糠雨,即可搞定

正則的聲明方式:

<script>
  //正則也是一個對象形式,key誒使用構(gòu)造函數(shù)的聲明方式以及字面量的聲明方式
  
  //1 構(gòu)造函數(shù)聲明方式
  var reg = new RegExp("abc");
  var reg = new RegExp(/abc/);
  
  //2 字面量(推薦方式)
  var reg = /abc/;

</script>

test方法與簡單類的使用:

<script>
  //簡單類:可以匹配正則內(nèi)部設(shè)置的所有內(nèi)容
  var reg = /abc/;//可以匹配某個內(nèi)部含有abc的字符串,abc必須為整體徘跪,連續(xù)才可以
  
  //正則.test(要驗證的字符串)  返回bool值甘邀,匹配成功返回true,否則返回false
  console.log(reg.test("lhugabcidwa"));//true
  console.log(reg.test("lhugaibcdwa"));//false

</script>

字符類:


<script>
  //字符類的標(biāo)識垮庐,在正則內(nèi)部使用[]標(biāo)識
  //[]整體表示一位字符,滿足內(nèi)部的任何一個字符即可
  
  var reg = /[abc]/;//可以匹配含有abc任意一個字符的字符串
  
  console.log(reg.test("ljalubigcliu"));//true
  console.log(reg.test("ljbkbluigliu"));//true
  console.log(reg.test("ljkaluigliu"));//true
  console.log(reg.test("ljkcluigliu"));//true
  console.log(reg.test("ljkluigliu"));//false


</script>

反向類:


<script>
  //反向類是對字符類功能的擴(kuò)展
  //在字符類的[]內(nèi)最開始位置書寫^,表示反向類
  //反向類的作用松邪,為可以匹配除[]內(nèi)部字符以外的其他字符
  
  var reg = /[^abc]/;//可以匹配到除abc以外的其他字符
  console.log(reg.test("abcabcabcd"));//true
  console.log(reg.test("kgukg"));//true
  console.log(reg.test("aaaaaaaa"));//false

</script>

范圍類和組合類:

<script>
  
  //范圍類是對字符串功能的擴(kuò)展,可以使用一個范圍表示多種字符
  //var reg = /[abcdefghijklmn]/;
  //var reg = /[a-n]/;//表示a-n之間的所有小寫字符
  //console.log(reg.test("uuuuuauuuuuu"));
  //console.log(reg.test("uuuuuopqrstuuuuuu"));
  
  
  //組合類:對范圍類的擴(kuò)展
  //var reg = /[a-z]/;//所有的小寫字符
  //var reg = /[A-Z]/;//所有的大寫字符
  //var reg = /[0-9]/;//所有的數(shù)字字符
  
  //如果想要同時檢測多種范圍哨查,可以采用自由組合的方式
  var reg = /[n-y2-7B-W]/;


</script>

預(yù)定于類:

<script>
  //預(yù)定義類:內(nèi)部預(yù)先準(zhǔn)備號的一些匹配方式

  console.log(/\d/.test("kudgwaygdi1awud"));
  console.log(/\d/.test("kudgwaygdiawud"));
  console.log(/\D/.test("1234567890"));
  console.log(/\D/.test("123456A7890"));


</script>

或者:

<script>
  //|某一個或者另一個
  
  //可以匹配a-e之間的任意一個字符
  //單個字符推薦使用字符類
  //相當(dāng)于  /[abcde]/;
  //var reg = /a|b|c|d|e/;
  
  //如果每個情況的字符數(shù)多余1個,只能使用或者操作
  var reg = /ab|bd|io|we|gh/;


</script>

邊界:

<script>
  //邊界標(biāo)識1:在正則的最開始位置書寫^
  //表示以后面書寫的內(nèi)容為開頭的字符串可以匹配成功
  //var reg = /^abc/;
  //console.log(reg.test("abcnukfguwadaw"));//true
  //console.log(reg.test("hhhabcnukfguwadaw"));//false
  
  //標(biāo)識2:在正則最后位置書寫 $
  //表示以$前面的內(nèi)容為結(jié)束的字符串可以匹配成功
  //var reg = /abc$/;
  //console.log(reg.test("uubuefeabc"));//true
  //console.log(reg.test("uubuefeabcmli"));//false
  
  //特殊用法逗抑,如果一個正則中同時使用了^和$,表示嚴(yán)格匹配(必須和內(nèi)部的內(nèi)容完全一致)
  var reg = /^abc$/;
  console.log(reg.test("abc"));//true
  console.log(reg.test("abcabc"));//false


</script>

量詞:

<script>
  //使用量詞,可以減少對正則內(nèi)部重復(fù)部分的書寫
  
  //自定義量詞:
  //1 {n} 內(nèi)部的數(shù)值表示前面書寫的內(nèi)容重復(fù)多少次
  //var reg = /^a{5}$/;
  //console.log(reg.test("aaaa"));//false
  //console.log(reg.test("aaaaa"));//true
  //console.log(reg.test("aaaaaa"));//false
  
  //2 {n,} 需要出現(xiàn)的次數(shù)為至少n次
  //var reg = /^a{3,}$/;
  //console.log(reg.test("aa"));
  //console.log(reg.test("aaa"));
  //console.log(reg.test("aaaa"));
  //console.log(reg.test("aaaaa"));
  //console.log(reg.test("aaaaaa"));
  
  //3 {n,m} 需要出現(xiàn)的次數(shù)為n-m次之間
  //var reg = /^a{3,5}$/;
  //console.log(reg.test("aa"));
  //console.log(reg.test("aaa"));
  //console.log(reg.test("aaaa"));
  //console.log(reg.test("aaaaa"));
  //console.log(reg.test("aaaaaa"));
  
  
  //預(yù)定義量詞:
  //1 * 表示0次或n次  使用方式(某個要匹配的部分可有可無均正確時锋八,使用*)
  //var reg = /^a*$/;
  //console.log(reg.test(""));
  //console.log(reg.test("a"));
  //console.log(reg.test("aaaaa"));
  //console.log(reg.test("aaaaaaaaaaaaaa"));
  
  //2 + 表示1次或n次  使用方式浙于,某個部分至少出現(xiàn)一次,可以使用+
  //var reg = /^a+$/;
  //console.log(reg.test(""));
  //console.log(reg.test("a"));
  //console.log(reg.test("aa"));
  //console.log(reg.test("aaaaa"));
  //console.log(reg.test("aaaaaaaaaaaaaa"));
  
  //3 ? 表示0次或1次
//  var reg = /^a?$/;
//  console.log(reg.test(""));
//  console.log(reg.test("a"));
//  console.log(reg.test("aa"));
//  console.log(reg.test("aaaaaa"));
  
  
  //注意*所指示的部分挟纱,如果需要是整體羞酗,可以添加()
  var reg = /^(abc)*$/;
  console.log(reg.test("abcabcabc"));//true
  console.log(reg.test("abcccccccc"));//false


</script>

其他方法:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>今天天氣不錯</title>
</head>
<body>

<script>
  //字符串.replace(要替換的部分,替換為的部分)
  //var str = "abacadae";
  //console.log(str.replace("a", "z"));
  
  //  //參數(shù)1不僅可以為字符串,同樣可以設(shè)置為正則表達(dá)式
  //  var str = "aAbAacAadAaeA";
  //
  //  //如果希望正則表達(dá)式可以匹配所有滿足條件的結(jié)果紊服,可以使用正則的匹配模式
  //  //書寫位置為正則后面
  //  // g - global - 全局匹配
  //  console.log(str.replace(/a/g, "z"));
  ////  console.log(str.replace(new RegExp("a","g"), "z"));
  //
  //  // i - ignoreCase 忽略大小寫
  //  console.log(str.replace(/a/gi, "z"));
  
  //提取操作:
  // 字符串.match(正則) 會將匹配到的內(nèi)容提取出來檀轨,并且返回
  
  var str = "小明:大神你好欺嗤,關(guān)注你很久,你共享了很多的內(nèi)容煎饼,我都非常喜歡,么么噠吆玖,我得郵箱是xiaoming@163.com.cn小紅:前兩天我老公說想看這個片子,我要今天晚上跟他一起看,我得郵箱是xiaohong@sina.com李雷:不廢話沾乘,直接六郵箱 lilei@xxx.gov.com我:好人一生平安,郵箱是wuyou@qq.com"
  //提取出內(nèi)部的郵箱地址
  //console.log(str.match(/\w+@\w+(\.\w+)+/g));
  
  
  //正則.exec(字符串);
  
  var reg = /(\w+)@\w+(?:\.\w+)+/g;
  //使用一個正則同時匹配多次同一字符串,操作會進(jìn)行累計
  
  //分組提韧崃帷:在正則中()不僅可以像以前一樣使用掷匠,還可以進(jìn)行分組,分組后的內(nèi)容會被exec提取出來
  //但是如果某一個組的內(nèi)容并不需要提取,可以在這個括號的開始位置讹语,書寫?:
  console.log(reg.exec(str));
  console.log(reg.exec(str));
  console.log(reg.exec(str));
  console.log(reg.exec(str));


</script>
</body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末募强,一起剝皮案震驚了整個濱河市崇摄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逐抑,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件进每,死亡現(xiàn)場離奇詭異,居然都是意外死亡田晚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門芹壕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來接奈,“玉大人,你說我怎么就攤上這事睁壁。” “怎么了潘明?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵疫剃,是天一觀的道長。 經(jīng)常有香客問我牲阁,道長,這世上最難降的妖魔是什么城菊? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任碉克,我火速辦了婚禮,結(jié)果婚禮上客税,老公的妹妹穿的比我還像新娘。我一直安慰自己更耻,他們只是感情好捏膨,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布食侮。 她就那樣靜靜地躺著锯七,像睡著了一般。 火紅的嫁衣襯著肌膚如雪眉尸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天效五,我揣著相機(jī)與錄音炉峰,去河邊找鬼。 笑死戒劫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的迅细。 我是一名探鬼主播淘邻,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼统阿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起扶平,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蔬蕊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后岸夯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡勉吻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年餐曼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片源譬。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡孕似,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喉祭,到底是詐尸還是另有隱情,我是刑警寧澤泛烙,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站藐唠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鹉究。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一妈嘹、第九天 我趴在偏房一處隱蔽的房頂上張望绍妨。 院中可真熱鬧,春花似錦他去、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽允坚。三九已至,卻和暖如春稠项,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背展运。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留拗胜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓埂软,卻偏偏與公主長得像,于是被迫代替她去往敵國和親勘畔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

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