<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 一、正則表達式的基本語法 ??? 1、概念:正則表達式由普通字符和特殊字符(元字符)組成的文本模式,該模式描述在查找字符串主體時待匹配的一個或者多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。 ???????? 普通字符包括所有的大小寫字母字符、所有數字、所有標點符號及一些特殊符號。普通字符本身可以組成一個正則表達式,也可以和元字符組合組成一個正則表達式;而元字符則具有特殊的含義,包括()、[]、{}、/、^、$、*、+、?、.、|、-、?:、?=、?! ?? 2、基本語法 ![](https://box.kancloud.cn/2016-08-30_57c54ec65c2e4.jpg) ??? 3、優先權含義 ![](https://box.kancloud.cn/2016-08-30_57c54ec67a4cb.jpg) ## 二、使用RegExp處理字符串正則匹配 ?? 1、創建一個RegExp對象:一是使用正則字符串創建(兩個斜杠包圍)創建一個RegExp對象:var re = /pattern/[flags];? 二是用Javascript內建類RegExp類創建RegExp對象:var re = new RegExp("pattern"[,flags]); ?? 2、參數詳解: ?????? 2.1??? pattern:是要使用的正則表達式模式 ?????? 2.2??? flags:可選參數,用于修飾正則表達式,取值如下: ![](https://box.kancloud.cn/2016-08-30_57c54ec68bf9f.jpg) ~~~ <pre name="code" class="javascript">function matchDemo() { var str = "abcdefgh"; var re = new RegExp("abc","g"); //全局匹配abc var result = re.exec(str); alert(result); } matchDemo(); ~~~ ![](https://box.kancloud.cn/2016-08-30_57c54ec69d847.jpg) ?? 3、方法和屬性 ????????? 3.1? exec():檢索字符串中的正則表達式的匹配,返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值為 null。 ~~~ function matchDemo() { var str = "abcdefgh"; var re = new RegExp("def","g"); //全局匹配def var result = re.exec(str); alert(result); } matchDemo(); ~~~ 結果: ![](https://box.kancloud.cn/2016-08-30_57c54ec6b25d2.jpg) exec()方法返回的數組有input和index屬性,input包含了整個被查找的字符串,index屬性包含了匹配的子串的位置。result.index返回3,result.input則返回abcdefgh。 對于pattern本身也有lastIndex和source兩個屬性,前者包含匹配最后一個字符的位置,后者包含pattern本身,可以利用該屬性修改匹配模式。 ? 3.2?? test():檢測一個字符串是否匹配某個模式,如果匹配則返回true,反之返回FALSE。如利用上例,re.test(str)返回TRUE,但是/ABC/.test(str)返回FALSE。 ## 四、正則表達式的捕獲語法和變量替換 ?? 1、捕獲語法: ???????? 1.1? (pattern):匹配pattern并捕獲該匹配的子表達式,可以使用$0...$9(或[0]...[9])從結果中檢索捕獲的匹配。 ~~~ var re =/windows(98|95|NT)/; var str = "windows95"; //匹配windows95或者windows98或者windowsNT,不匹配windows document.write(re.exec(str)); //windows9598與windows95匹配結果一樣 document.write("<br/>$0:"+RegExp.$1); ~~~ 結果: ![](https://box.kancloud.cn/2016-08-30_57c54ec6c7405.jpg) ???????? 1.2??? (?:pattern):匹配pattern但不捕獲pattern,不可以使用$0...$9(或[0]...[9])從結果中檢索捕獲的匹配。 ~~~ var re =/windows(?:98|95|NT)/; var str = "windows98"; //匹配windows95或者windows98或者windowsNT,不匹配windows document.write(re.exec(str)); //windows9598與windows95匹配結果一樣 document.write("<br/>$0:"+RegExp.$1); ~~~ 結果: ![](https://box.kancloud.cn/2016-08-30_57c54ec6dadc0.jpg) ???????? 1.3??? (?=pattern)正向預查,在任何匹配pattern的字符串開始處匹配查找字符串,不可以使用$0...$9(或[0]...[9])從結果中檢索捕獲的匹配。 ~~~ var re =/windows(?=98|95|NT)/; var str = "windowsNT"; //匹配windows95或者windows98或者windowsNT,不匹配windows document.write(re.exec(str)); //windows9598與windows95匹配結果一樣 document.write("<br/>$0:"+RegExp.$1); ~~~ 結果: ![](https://box.kancloud.cn/2016-08-30_57c54ec6ee91b.jpg) ???????? 1.4?? (?!pattern):執行反向預查,先執行搜索子表達式,實現與1.3相反的功能,不可以使用$0...$9(或[0]...[9])從結果中檢索捕獲的匹配。 ~~~ var re =/windows(?!98|95|NT)/; var str = "windows67"; //不匹配windows95或者windows98或者windowsNT,不匹配windows document.write(re.exec(str)); document.write("<br/>$0:"+RegExp.$1); ~~~ 結果: ![](https://box.kancloud.cn/2016-08-30_57c54ec715a76.jpg) ?? 2、使用$替換變量 ?????????? 字 符????????????????????????? 含義 ?????????????????? $$?????????????????????????????? $ ??????????? $&?????????????????????????????? 指定與整個模式匹配的字符串 ??????????? $`??????????????????????????????? 指定與$&描述的匹配之前的字符串部分 ??????????? $'???????????????????????????????? 指定與$&描述的匹配之后的字符串部分 ??????????? $n??????????????????????????????? 捕獲的第n個匹配,n為1-9 ??????????? $nn????????????????????????????? 捕獲的第nn個匹配,nn為01--99 ~~~ var oString = "flip-flop"; var re = /(\w+)-(\w+)/g; //$1表示第一個\w+,$2是第二個,第一個匹配flip,第二個匹配flop oString = oString.replace(re,"$1-$2"); document.write(oString+"<br/>"); //輸出flip-flop function matchDemo() { var s; var re = new RegExp("d(b+)(d)","ig"); var str = "cdbBdbsbdbdz"; var arr = re.exec(str); s = "$1 contains: " + RegExp.$1 + "<br/>"; s += "$2 contains: " + RegExp.$2 + "<br/>"; s += "$3 contains: " + RegExp.$3; document.write(s); } matchDemo(); ~~~ 結果: ![](https://box.kancloud.cn/2016-08-30_57c54ec727a3a.jpg) ## 五、使用string類處理字符串 ???? 使用new或者用文字字面字符串,可以調用String類的所有成員方法。對于字符串文字,JS解釋引擎會自動將其轉為臨時的String對象,然后調用方法,最后清楚臨時對象。不要混淆字符串文字和String實例。String對象有反常的行為。 ~~~ var s1 = "2+2"; //字符串文字 var s2 = new String("2+2"); //String實例 alert(eval(s1)+"\n"+eval(s2)); //alert(s1+"\n"+s2)的返回結果一樣:2+2 ~~~ 結果: ![](https://box.kancloud.cn/2016-08-30_57c54ec73989c.jpg) ???? 1、String類的方法和屬性 ![](https://box.kancloud.cn/2016-08-30_57c54ec74d32b.jpg) ???? 2、在方法中使用正則表達式 ????????????? 2.1?? match(searchvalue,regexp):在字符串內檢索指定的值,或找到一個或多個正則表達式的匹配,返回存放匹配結果的數組。該數組的內容依賴于 regexp 是否具有全局標志 g。searchvalue規定要檢索的字符串值,regexp,非必須,規定要匹配的模式的 RegExp 對象。如果該參數不是 RegExp 對象,則需要首先把它傳遞給 RegExp 構造函數,將其轉換為 RegExp 對象。 ~~~ <span style="font-size:18px;"><script type="text/javascript"> var str="Hello world!" document.write(str.match("world") + "<br />") //world document.write(str.match("World") + "<br />") //null document.write(str.match("worlld") + "<br />") //null document.write(str.match("world!")) //world! </script></span> ~~~ ~~~ <span style="font-size:18px;">var str="1 plus 2 equal 3" document.write(str.match(/\d+/g)) //不使用全局標志g,則只返回一個匹配,輸出1</span> ~~~ 結果: ![](https://box.kancloud.cn/2016-08-30_57c54ec764e97.jpg) ???????????? 2.2??? replace(*regexp/substr*,*replacement*)在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串,返回一個新的字符串。 regexp/substr規定子字符串或要替換的模式的 RegExp 對象,如果該值是一個字符串,則將它作為要檢索的直接量文本模式,而不是首先被轉換為 RegExp 對象。 *replacement*一個字符串值。規定了替換文本或生成替換文本的函數. ~~~ <span style="font-size:18px;">var str="Visit Microsoft!" document.write(str.replace(/Microsoft/, "W3School"))</span> ~~~ 結果: ![](https://box.kancloud.cn/2016-08-30_57c54ec777cee.jpg) ?????????? 2.3?? search(regexp) 方法用于檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子字符串。regexp該參數可以是需要在 stringObject 中檢索的子串,也可以是需要檢索的 RegExp 對象。要執行忽略大小寫的檢索,請追加標志 i。返回第一個與 regexp 相匹配的子串的起始位置,若沒有匹配,返回-1 ~~~ <span style="font-size:18px;">var str="Visit W3School!" document.write(str.search(/w3school/)) </span> ~~~ 結果: ![](https://box.kancloud.cn/2016-08-30_57c54ec78a40f.jpg) ????????? 2.4???? split(*separator*,*howmany*) 方法用于把一個字符串分割成字符串數組并返回。*separator*參數必須,字符串或正則表達式,用于指定分隔符;*howmany*可選,該參數可指定返回的數組的最大長度。如果設置了該參數,返回的子串不會多于這個參數指定的數組。如果沒有設置該參數,整個字符串都會被分割,不考慮它的長度。 ~~~ <span style="font-size:18px;">var str="How are you doing today?" document.write(str.split(" ") + "<br />") document.write(str.split("") + "<br />") document.write(str.split(" ",3))</span> ~~~ 結果: ![](https://box.kancloud.cn/2016-08-30_57c54ec79d9e5.jpg) | ? | ? | |-----|-----|
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看