<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 功能強大 支持多語言、二開方便! 廣告
                **原子**:就是放到定界符中的字母數字等要匹配的字符如/love/ 里邊的love就是原子 即字符串中有love才能匹配, **自定義原子表?\[ \]** 里邊的原子都是或者的關系 ?如上邊的/love/是**并且**的意思即『先匹配l有的話在匹配l后是否有o前兩個都有在匹配o后邊是不是有v,然后lov都成立再見車lov后邊是不是有e這4個有一個不成立都不會被匹配,』?so表示必須要匹配整體的love的字符;而/\[love\]/表示只要匹配的字符串里有單個的l,o,v或者e都會被匹配出來是或者的意思 >[danger]在正則表達式中最少要有一個原子 **元字符:在定界符里的所有特殊字符都是元字符** **`. \ * + ?? ^ $? {n} {n,} {n,m} [] ()? [^] | [-]`** [元字符總表](https://www.cnblogs.com/lichihua/diary/2019/07/07/11145131.html) **限定符:重復** 如果說你想匹配連續5個數字怎么辦,寫五個/d太麻煩了吧,事實上我們肯定不會那么做?我們可以使用/d{5}. 常用的表示重復的符號如下表: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top"> <p>字符</p> </td> <td valign="top"> <p>說明</p> </td> </tr> <tr> <td valign="top"> <p>*</p> </td> <td valign="top"> <p>重復0到多次</p> </td> </tr> <tr> <td valign="top"> <p>+</p> </td> <td valign="top"> <p>重復1到多次</p> </td> </tr> <tr> <td valign="top"> <p>?</p> </td> <td valign="top"> <p>重復零次或一次</p> </td> </tr> <tr> <td valign="top"> <p>{n}</p> </td> <td valign="top"> <p>重復n次</p> </td> </tr> <tr> <td valign="top"> <p>{n,</p> </td> <td valign="top"> <p>重復n到多次</p> </td> </tr> <tr> <td valign="top"> <p>{n,m}</p> </td> <td valign="top"> <p>重復n到m次</p> <p>&nbsp;</p> </td> </tr> </tbody> </table> **懶惰限定符:?** ?如果有a.\*b正則表達式,有字符accccbccb去匹配,達到的是accccbccb還是accccb呢?答案是前者,會找最長的。但是有時我們不希望這樣,就可以使用懶惰限定符(也就是匹配盡可能少的字符)。比如上面的正則表達式可以這樣a.\*?b就可以解決問題了 <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top"> <p>字符</p> </td> <td valign="top"> <p>說明</p> </td> </tr> <tr> <td valign="top"> <p>*?</p> </td> <td valign="top"> <p>重復0到多次,但盡可能少的重復 代表(.*?)</p> </td> </tr> <tr> <td valign="top"> <p>+?</p> </td> <td valign="top"> <p>重復1到多次,但盡可能少的重復</p> </td> </tr> <tr> <td valign="top"> <p>??</p> </td> <td valign="top"> <p>重復0到一次,但盡可能少的重復</p> </td> </tr> <tr> <td valign="top"> <p>{n,m}?</p> </td> <td valign="top"> <p>重復n到m次,但盡可能少的重復</p> </td> </tr> <tr> <td valign="top"> <p>{n}?</p> </td> <td valign="top"> <p>重復n到多次,但盡可能少的重復</p> </td> </tr> </tbody> </table> 例: ``` \s* // 一直匹配盡可能多的空白字符 .*?\s //惰性匹配 .* 代表任意非空白字符,直到遇到第一個空白字符停止匹配 ``` **`.`** 匹配任意除換行符“\\n”外的字符 **`.*`** 就是單個字符匹配任意次 **`.*?`** 是滿足條件的情況只匹配一次,即最小匹配 ### **常見元字符詳細用法:** **模式中方括號外任何地方使用的** \ 一般用于轉義字符 ``` "/\?\\n/" ``` ^ 斷言目標的開始位置(或在多行模式下是行首) ``` "/^hell/" //必須以hell開頭的字符串相匹配 如:“hell”,?“hello” “hellhound” ``` $ 斷言目標的結束位置(或在多行模式下是行尾) ``` "/ar$/" //必須以ar結尾的字符串相匹配 如:“car”,?“bar”或 “ar” ^abc$ //就是要求以abc開頭和以abc結尾的字符串,實際上是只有abc匹配; ``` ^放在[]里時表示排除 find(?!pattern) 正向否定預搜索find的右邊不是pattern的字符 (?<!pattern)find 反向否定預搜索find的左邊不是pattern的字符 **以(?<=pattern)xxx為例,就是捕獲xxx右邊的內容沒有pattern的xxx** **以(?<!pattern)xxx為例,就是捕獲xxx左邊的內容沒有pattern的xxx** 匹配不包含abc的內容: ``` ^(?!.*abc).*$ ``` 表示匹配的字符串不包含and且不包含空白字符 ~~~ (?:(?!and)[^\s])* ~~~ **`. `** 匹配除換行符外的任何字符(默認) 要匹配包括“\\n”在內的任何字符,請使用像“[\s\S]”的模式。 ``` "/(.)/" 可以代表所有的單一字符,不包括"\n" //如果,要匹配包括"\n"在內的所有單個字符,怎么辦??用'[\n.]'這種模式。 "a.[0-9]" :一個a加一個字符再加一個0到9的數字; "^.{3}$" :三個任意字符結尾。 ``` [ 開始字符類定義 ] 結束字符類定義 ``` "/[0-9a-Z]+/" 注意:在中括號里面,所有的特殊字符,包括(''),都將失去他們的特殊性質 "[*\+?{}.]"? ??匹配含有這些字符的字符串: "如果列表里含有']',最好把它作為列表里的第一個字符(可能跟在'^'后面)。如果含有'-',最好把它放在最前面或者最后面,or或者一個范圍的第二個結束點[a-d-0-9]中間的‘-’將有效。 ``` | 開始一個可選分支 ``` "/a|b|c/" 同 "/[abc]/" "hi|hello":匹配含有"hi"或者"hello"的 字符串; "(b|cd)ef":匹配含有"bef"或者"cdef"的字符串; "(a|b)*c":匹配含有這樣多個(包括0個)a或b,后面跟一個c的字符串; ``` ( 子組的開始標記 ) 子組的結束標記 ``` "/(ab)|c/" ``` >[danger]要點:'\*' '+'?和?'?'?只管它前面那個字符。 **`?`** 作為量詞,表示 0 次或 1 次匹配。位于量詞后面用于改變量詞的貪婪特性。 (查閱量詞) ``` "/[0-9a-Z]?/" 同 "/[0-9a-Z]{0,1}/" ``` **`*`** 量詞,0 次或多次匹配 ``` "/[0-9a-Z]*/" 同 "/[0-9a-Z]{0,}/" //只針對原子最后那個字符 /fo*/ //可匹配 f fo foo fooo... 如conf info football full shuff ``` **`+`** 量詞,1 次或多次匹配 ``` "/[0-9a-Z]+/" 同 "/[0-9a-Z]{1,}/" //只針對原子最后那個字符 /fo+/ //可匹配 fo foo fooo... 如info football ``` { 自定義量詞開始標記 } 自定義量詞結束標記 ``` "/[0-9a-Z]{1}/" //匹配1次 "/[0-9a-Z]{1,}/" //至少匹配*n*次 "/[0-9a-Z]{3,9}+/" //匹配3~9次 "a(bc){1,5}" //a一個到5個"bc"; ``` **模式中方括號內** 模式中方括號內的部分稱為“字符類”。 在一個字符類中僅有以下可用元字符: \ 轉義字符 ``` "/[\?\}]+/" ``` ^ 僅在作為第一個字符(方括號內)時,表明字符類取反 ``` "/[^abc]+/" ``` \- 標記字符范圍 ``` "/[0-9]/" ``` ***** ***** **`\b `** 匹配一個單詞邊界 例如,“er\b” 以er結束 可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。 `/\bbom/` 以 “bomb”,或 “bom”開頭的字符串相匹配 **`\B `** 匹配非單詞邊界。“er\\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。 **`\d`** 匹配一個數字字符。等價于\[0-9\] **`\D`** 匹配一個非數字字符。等價于\[^0-9\] **`\s` ** 匹配任何**不可見字符**,包括空格、制表符、換頁符等等。等價于\[ \\f\\n\\r\\t\\v\] **`\S` ** 匹配任何**可見字符**。等價于\[^ \\f\\n\\r\\t\\v\] **`\w`** 匹配包括下劃線的任何**單詞字符**。這里的"單詞"字符使用Unicode字符集。 ???????????類似但不等價于“\[A-Za-z0-9\_\]”, ???????????[A-Za-z0-9_]只能匹配 英文字母下劃線和數字 ???????????而\w能匹配俄文等其他國家的字符如:"аdmin"會被\w匹配其中а是俄文字母 ???????????/^\[A-Za-z0-9\u4E00-\u9FA5-]{2,16}$/ 只允許數字、英文字母大小寫、中文 **`\W`** 匹配任何**非單詞字符**。等價于“\[^A-Za \f 匹配一個換頁符。等價于\\x0c和\\cL。 **`\r`** 匹配一個回車符。等價于\\x0d和\\cM **`\n`** 匹配一個換行符。等價于\\x0a和\\cJ ***** ***** \t 匹配一個制表符。等價于\\x09和\\cI \v 匹配一個垂直制表符。等價于\\x0b和\\cK -z0-9\_\]” \cx 匹配由x指明的控制字符。例如,\\cM匹配一個Control-M或回車符。x的值必須為A-Z或a-z之一。否則,將c視為一個原義的“c”字符 \\x*n* 匹配*n*,其中*n*為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。例如,“\\x41”匹配“A”。“\\x041”則等價于“\\x04&1”。正則表達式中可以使用ASCII編碼 \\*num* 匹配*num*,其中*num*是一個正整數。對所獲取的匹配的引用。例如,“(.)\\1”匹配兩個連續的相同字符,同(.)(.)。又如:(.)(\\?)(.)\2 同(.)(\\?)(.)(\\?) \\*n* 標識一個八進制轉義值或一個向后引用。如果\\*n*之前至少*n*個獲取的子表達式,則*n*為向后引用。否則,如果*n*為八進制數字(0-7),則*n*為一個八進制轉義值 \\*nm* 標識一個八進制轉義值或一個向后引用。如果\\*nm*之前至少有*nm*個獲得子表達式,則*nm*為向后引用。如果\\*nm*之前至少有*n*個獲取,則*n*為一個后跟文字*m*的向后引用。如果前面的條件都不滿足,若*n*和*m*均為八進制數字(0-7),則\\*nm*將匹配八進制轉義值*nm*。 \\*nml* 如果*n*為八進制數字(0-7),且*m*和*l*均為八進制數字(0-7),則匹配八進制轉義值*nml*。 \\u*n* 匹配*n*,其中*n*是一個用四個十六進制數字表示的Unicode字符。例如,\\u00A9匹配版權符號(&copy;)。 \\p{P} 參看下列 ``` 小寫 p 是 property 的意思,表示 Unicode 屬性,用于 Unicode 正表達式的前綴。中括號內的“P”表示Unicode 字符集七個字符屬性之一:標點字符。 其他六個屬性: L:字母; M:標記符號(一般不會單獨出現); Z:分隔符(比如空格、換行等); S:符號(比如數學符號、貨幣符號等); N:數字(比如阿拉伯數字、羅馬數字等); C:其他字符。 注:此語法部分語言不支持,例:javascript。 ``` ***** 斷言:詳情見斷言章節 (pattern) (?:pattern) (?=pattern) (?!pattern) (?<=pattern) (?<!pattern)
                  <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>

                              哎呀哎呀视频在线观看