成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS 正則(RegExp)

zeyu / 2329人閱讀

摘要:返回值是被找到的值。序列匹配,而則匹配。還有關(guān)于如何選擇一個(gè)這里的,轉(zhuǎn)換成文本后,只表示一個(gè)就是說這段待執(zhí)行文本內(nèi)含一個(gè)構(gòu)建正則思考一下創(chuàng)建正則的幾種方式并且多認(rèn)識一個(gè)正則方法匹配前面的子表達(dá)式一次或多次。和均為非負(fù)整數(shù),其中。

JavaScript RegExp 對象 :測試工具:REGEXPER

通過 new 關(guān)鍵詞來定義 RegExp 對象。

test()

test() 方法檢索字符串中的指定值。返回值是 truefalse

        var r = new RegExp("e");
        var str = "hello world!";
        alert(r.test(str))            // true
exec()

exec() 方法檢索字符串中的指定值。返回值是被找到的值。如果沒有發(fā)現(xiàn)匹配,則返回 null。

        var r = new RegExp("e");
        var str = "hello world!";
        alert(r.exec(str));            // "e"

這些是JS RegExp提供的一些方法,簡單介紹下;

字面量
        var reg = /is/;

這就是一個(gè)簡單的字面量正則賦值

:將下一個(gè)字符標(biāo)記為或特殊字符、或原義字符、或向后引用、或八進(jìn)制轉(zhuǎn)義符。

例如, "n" 匹配字符 "n"。" " 匹配換行符。序列 "" 匹配 "",而 "(" 則匹配 "("。

還有關(guān)于如何選擇一個(gè)?

        var str1 = "aaaAAA";            // 這里的,轉(zhuǎn)換成文本后,只表示一個(gè),就是說這段待執(zhí)行文本內(nèi)含一個(gè)
        console.log(str1);                // "aaaAAA"
        var r = new RegExp(//);         // 構(gòu)建正則
        console.log(str1.replace(r,"R")); // "aaaRAAA"
思考一下創(chuàng)建正則的幾種方式,并且多認(rèn)識一個(gè)正則方法 +:匹配前面的子表達(dá)式一次或多次。要匹配 + 字符,請使用 +。
        var s = "ffffdffffdffffdd";
        
        var r = /d/;                // "Sffffdffffdffffd"
        var r1 = new RegExp("d");    // "Sffffdffffdffffd"
        var r2 = new RegExp(/d/);    // "Sffffdffffdffffd"
        var r3 = new RegExp("d");    // "Sffffdffffdffffd"
        
        var R = /d+/;                // "S"
        var R1 = new RegExp("d+")    // "S"
        var R2 = new RegExp(/d+/);    // "S"
        var R3 = new RegExp("d+"); // "S"
        //    console.log(s.replace(rX,"S"))
:匹配一個(gè)字邊界,即字與空格間的位置。(不是空格!??!)
        var reg = /is/;
        var str = "He is a boy. This is a dog. Where is she?";
        console.log(
            str.replace(reg,"IS")
        );
        // "He IS a boy. This is a dog. Where is she?" 
        // 使用replace方法,將按照正則規(guī)則選擇到的字符串(... is ...)替換為"IS",但是我們發(fā)現(xiàn)只有第一句被替換

只有第一句被替換?引出我們的:

g:執(zhí)行全局匹配(查找所有匹配而非在找到第一個(gè)匹配后停止)

在一段字符串中,可能存在若干符合正則的選擇,不執(zhí)行全局g,只會選擇第一個(gè),執(zhí)行全局g,所有符合的都會被選擇到。
另一種說法:global可選標(biāo)志,帶這個(gè)標(biāo)志表示替換將針對行中每個(gè)匹配的串進(jìn)行,否則則只替換行中第一個(gè)匹配串

   reg = /is/g;
   console.log(str.replace(reg,"IS"));     // "He IS a boy. This IS a dog. Where IS she?"
.:除了換行符以外的任意字符。要匹配包括 "n" 在內(nèi)的任何字符,請使用像"(.| )"的模式。 *:匹配前面的子表達(dá)式零次或多次 OR (*前邊的內(nèi)容可以連續(xù)重復(fù)使用任意次以使整個(gè)表達(dá)式得到匹配)

例如,zo* 能匹配 "z" 以及 "zoo"。* 等價(jià)于{0,}。

PS:.*連在一起就意味著任意數(shù)量的不包含換行的字符

        var str = "ffffdffffd
dfdf";
        console.log(str);        // "ffffdffffd 
                                 // dfdf"        這里文本排列錯(cuò)誤,但是知道里面存在一個(gè)換行符就對了
        var reg = /.*/;                    
        console.log(str.replace(reg,"X"));      // "X
                                                // dfdf"    選擇了換行符前面的任意字符(這里重復(fù)任意次)
d:匹配一個(gè)數(shù)字字符。等價(jià)于 [0-9] D:匹配一個(gè)非數(shù)字字符。等價(jià)于 [^0-9]。

這里要提到一個(gè)中括號:

[a-z]:字符范圍。匹配指定范圍內(nèi)的任意字符。例如,"[a-z]" 可以匹配 "a" 到 "z" 范圍內(nèi)的任意小寫字母字符。(包括本身)
        var str = "a1b2c3d4";
        
        var reg = /d/;                            // 選擇一個(gè)數(shù)字字符(而已)哪怕有更多選擇只選擇第一個(gè)遇到的
        console.log(str.replace(reg,"X"));        // "aXb2c3d4"
        reg = /d/g;                            // 在全局中,選擇數(shù)字字符,并返回多個(gè)(如果存在)符合規(guī)則的字串
        console.log(str.replace(reg,"X"));        // "aXbXcXdX"
        reg = /[a-z]d/g                        // 一個(gè)a-z任意字符和一個(gè)數(shù)字字符,并返回多個(gè)(如果存在)符合規(guī)則的字串
        console.log(str.replace(reg,"X"));        // "XXXX"
        reg = /[a-z]d/                            // 一個(gè)a-z任意字符和一個(gè)數(shù)字字符
        console.log(str.replace(reg,"X"));        // "Xb2c3d4"
        // D 匹配一個(gè)非數(shù)字字符,與d相反
        str = "123ABC"
        reg = /D/;
        console.log(str.replace(reg,"0"));        // "1230BC"
        reg = /D/g;                            // 一個(gè)非數(shù)字字符,并返回多個(gè)(如果存在)符合規(guī)則的字串
        console.log(str.replace(reg,"0"));        // "123000"
        reg = /D{3}/;                            // 三個(gè)連續(xù)的非數(shù)字字符
        console.log(str.replace(reg,"456"));    // "123456"
        
        // 區(qū)分大小寫
        str = "A1B2C3d4"
        reg = /[A-Z]/g;                            // 選擇A-Z大寫字母任意一個(gè),并返回多個(gè)(如果存在)符合規(guī)則的字串
        console.log(str.replace(reg,"O"))        // "O1O2O3d4"
        reg = /[A-Z]d/;                        // 選擇A-Z大寫字母任意一個(gè)和一個(gè)數(shù)字
        console.log(str.replace(reg,"O"))        // "OB2C3d4"
        reg = /[A-Z]d/g;                        // 選擇A-Z大寫字母任意一個(gè)和一個(gè)數(shù)字,并返回多個(gè)(如果存在)符合規(guī)則的字串
        console.log(str.replace(reg,"O"))        // "OOOd4"

和大括號:

{n}n 是一個(gè)非負(fù)整數(shù)。匹配確定的 n 次。例如,"o{2}" 不能匹配 "Bob" 中的 "o",但是能匹配 "food" 中的兩個(gè) o。 {n,}n 是一個(gè)非負(fù)整數(shù)。至少匹配n 次。例如,"o{2,}" 不能匹配 "Bob" 中的 "o",但能匹配 "foooood" 中的所有 o。"o{1,}" 等價(jià)于 "o+"。"o{0,}" 則等價(jià)于 "o*"。 {n,m}mn 均為非負(fù)整數(shù),其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個(gè) o。"o{0,1}" 等價(jià)于 "o?"。請注意在逗號和兩個(gè)數(shù)之間不能有空格。 ?:匹配前面的子表達(dá)式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價(jià)于 {0,1}。 +:匹配前面的子表達(dá)式一次或多次。例如,"zo+" 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價(jià)于 {1,}。

還有之前的:

*:匹配前面的子表達(dá)式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價(jià)于{0,}。

以上5種在正則中被成為限定符,很好理解,限制匹配次數(shù)嘛

        var str = "A1234B123C123456";
        
        var reg = /d{4}/;                        // {4}之前的d重復(fù)匹配4次
        console.log(str.replace(reg,"&"));        // "A&B123C123456"
        reg = /d{6}/                            // 重復(fù)6次
        console.log(str.replace(reg,"&"));        // "A1234B123C&"
        reg = /[A-Z]d{6}/                        // 一個(gè)A-Z任意字母,和一個(gè)連續(xù)6個(gè)任意數(shù)字
        console.log(str.replace(reg,"&"))        // "A1234B123&"
        
        str = "000&1111&222222&55555555&";
        reg = /d{4,}/;                            // 一個(gè)數(shù)字,至少匹配4次
        console.log(str.replace(reg,"——"));        // "000&——&222222&55555555&"
        reg = /d{4,}/g;                        // (一個(gè)數(shù)字,至少匹配4次),并返回多個(gè)符合規(guī)則的匹配串
        console.log(str.replace(reg,"——"));        // "000&——&——&——&"
        reg = /d{4,6}/g;                        // (一個(gè)數(shù)字,至少4次,至多6次)
        console.log(str.replace(reg,"——"));        // "000&——&——&——55&"

        reg = /d?/g;                            // 等價(jià)于:{0,1}
        console.log(str.replace(reg,"?"));        // "????&?????&???????&?????????&?"

        reg = /d+/;                            // 等價(jià)于:{1,}
        console.log(str.replace(reg,"+"));        // "+&1111&222222&55555555&"
        reg = /d+/g;                            
        console.log(str.replace(reg,"+"));        // "+&+&+&+&"
        
        reg = /d*/g;
        console.log(str.replace(reg,"+"));        // "++&++&++&++&+"            

正則表達(dá)式30分鐘入門教程

正則表達(dá)式語言

正則表達(dá)式

正則表達(dá)式全部符號解釋

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83157.html

相關(guān)文章

  • JS中的正則表達(dá)式

    摘要:構(gòu)造函數(shù)可以有兩個(gè)字符串參數(shù),第一個(gè)參數(shù)包含正則表達(dá)式的主體部分。只讀的布爾值,說明這個(gè)正則表達(dá)式是否帶有修飾符。中正則的擴(kuò)展構(gòu)造函數(shù)在中,只能接受字符串作為參數(shù),允許其直接接受正則表達(dá)式作為參數(shù)。 上文傳送門:初探正則表達(dá)式 正則表達(dá)式是一個(gè)描述字符模式的對象,JavaScript 的 RegExp 類表示正則表達(dá)式,String 和 RegExp 都定義了方法,后者使用正則表達(dá)式進(jìn)...

    Soarkey 評論0 收藏0
  • js中與字符串、正則表達(dá)式有關(guān)的函數(shù)

    摘要:直接量語法創(chuàng)建對象的語法參數(shù)參數(shù)是一個(gè)字符串,指定了正則表達(dá)式的模式或其他正則表達(dá)式。方法用于在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。 直接量語法/pattern/attributes 創(chuàng)建 RegExp 對象的語法:new RegExp(pattern, attributes); 參數(shù)參數(shù) pattern 是一個(gè)字符串,指定了正則表達(dá)式的模式或其他正則表...

    Null 評論0 收藏0
  • JS正則表達(dá)式精簡教程(JavaScript RegExp 對象)

    摘要:返回值是被找到的值。支持正則表達(dá)式的對象的方法方法檢索與正則表達(dá)式相匹配的子字符串。該數(shù)組是通過在指定的邊界處將字符串分割成子串創(chuàng)建的。注意報(bào)錯(cuò)正確示例附表修飾符修飾符描述執(zhí)行對大小寫不敏感的匹配。查找以十六進(jìn)制數(shù)規(guī)定的字符。 什么是 RegExp? RegExp 是正則表達(dá)式的縮寫。 當(dāng)您檢索某個(gè)文本時(shí),可以使用一種模式來描述要檢索的內(nèi)容。RegExp 就是這種模式。 簡單的模式可以...

    ACb0y 評論0 收藏0
  • JS正則表達(dá)式一條龍講解,從原理和語法到JS正則、ES6正則擴(kuò)展,最后再到正則實(shí)踐思路

    摘要:控制權(quán)和傳動(dòng)這兩個(gè)詞可能在搜一些博文或者資料的時(shí)候會遇到,這里做一個(gè)解釋先控制權(quán)是指哪一個(gè)正則子表達(dá)式可能為一個(gè)普通字符元字符或元字符序列組成在匹配字符串,那么控制權(quán)就在哪。 溫馨提示:文章很長很長,保持耐心,必要時(shí)可以跳著看,當(dāng)然用來查也是不錯(cuò)的。 正則啊,就像一座燈塔,當(dāng)你在字符串的海洋不知所措的時(shí)候,總能給你一點(diǎn)思路;正則啊,就像一臺驗(yàn)鈔機(jī),在你不知道用戶提交的鈔票真假的時(shí)候,...

    Michael_Lin 評論0 收藏0
  • 玩轉(zhuǎn)javascript RegExp對象

    摘要:玩轉(zhuǎn)對象中的正則表達(dá)式的正則表達(dá)式語法極大地借鑒了另一種腳本語言的正則表達(dá)式語法對象是的一個(gè)內(nèi)置對象,與,類似。創(chuàng)建對象可通過構(gòu)造函數(shù)創(chuàng)建。當(dāng)要根據(jù)用戶輸入來構(gòu)造正則表達(dá)式時(shí),必須采用構(gòu)造函數(shù)方式。如與被看做相同的字符模式。 玩轉(zhuǎn)javascript RegExp對象 js中的正則表達(dá)式 js的正則表達(dá)式語法極大地借鑒了另一種腳本語言Perl的正則表達(dá)式語法.RegExp對象是js的一...

    alexnevsky 評論0 收藏0
  • JavaScript正則表達(dá)式總結(jié)

    摘要:正則表達(dá)式一直是里比較難以掌握的點(diǎn)。在中創(chuàng)建正則的兩種方式使用字面量這就是正則表達(dá)式的字面量語法,表示正則表達(dá)式的模式,為正則表達(dá)式的標(biāo)志。字面量形式的正則表達(dá)式一般使用較多,也推薦大家盡可能使用這種形式,簡潔易讀,符合正常的使用習(xí)慣。 正則表達(dá)式一直是js里比較難以掌握的點(diǎn)。 看不懂,學(xué)不會,記不住。 每次需要用到正則的時(shí)候,都需要再去查找資料。 今天花時(shí)間把正則的知識點(diǎn)總結(jié)下,希望...

    big_cat 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<