<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                因為小寶鴿正則表達式用得不多,一般也就網上找找js驗證手機號、郵箱、qq、身份證號碼的正則表達式,然后使用。那些正則表達式,看著似懂非懂的樣子,始終存在一些疑問,幾番想系統學習一下正則表達式,但是那些疑惑就像修仙大道的心結,讓我正則表達式水平毫無存進。最近剛好有這樣的時間把這些問題弄明白,并且對正則表達式有了入門的理解。 ### (1)為什么很多JavaScript正則表達式串都是以“/”開頭并且以“/”結尾? 其實這是一種正則表達式的隱式構造方式. 在JavaScript里面,一般有兩種構造方式 1、用兩斜杠將正則表達式夾在中間。? 例:var reg = /\w+/; 2、使用new來創建。? 例:var reg = new RegExp(“\\w+”);? 注意:這里的\\w是雙斜杠,因為\本來就是字符串的轉義字符,這里就經過了兩次轉義了。 第二種是正則對象的顯式構造方法。 因此,如果你采用顯式構造方法一定記得把前后的/去掉哦,不然,哼。 ### (2)為什么很多JavaScript正則表達式串都用^和$包含著正則表達式串 因為^ 和?$?語言元素與輸入字符串的開頭和結尾匹配。? ^表示必須以什么開頭? $表示必須以什么結尾 ^表示必須以什么開頭,這個好理解,關于$我們看下面的例子: 如我們想匹配以1開頭,后面跟著10數字(類似與手機號的弱驗證)? 那么我們正則表達式串可以這樣:^[1][\d]{10}$? 如果我們校驗字符串為:? 14564564564564654654654564654 //不匹配? 14564564564 //匹配 如果我們把正則表達式最后面的$去掉:^[1][\d]{10},? 結果是這樣:? 14564564564564654654654564654 //匹配? 14564564564 //匹配 如圖: ![](https://box.kancloud.cn/2016-03-15_56e77db7091b8.jpg) ![](https://box.kancloud.cn/2016-03-15_56e77db71c5d6.jpg) ![](https://box.kancloud.cn/2016-03-15_56e77db732bdb.jpg) ### (3)正則表達式除了用來驗證下手機號碼、身份證號碼,還能干什么? 正則表達式的用途 1、數據驗證,例如,可以測試輸入字符串,以查看字符串內是否出現電話號碼模式或信用卡號碼模式。這稱為數據驗證。 2、替換文本,可以使用正則表達式來識別文檔中的特定文本,完全刪除該文本或者用其他文本替換它。 3、基于模式匹配從字符串中提取子字符串,可以查找文檔內或輸入域內特定的文本。 關于,數據驗證,沒什么好說的,就是平時那些js驗證手機號啊,郵箱啊什么的,這里就不說了。 下面關于提取子字符串和替換文本,我們以Java為例,為什么是Java?誰讓Java是世界上最好的語言呢!是它,就是它,咳咳,客觀請看: ~~~ import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestRegex { public static void main(String[] args) { //把 第“數字"條 全部查找出來然后換成 小寶鴿 String regex = "第[0-9]*條"; String str = "第9條,數據錯誤,錯誤信息,第jjj哦條哦條我的條件如何?第221條xx"; System.out.println(str); Pattern pat = Pattern.compile(regex); Matcher matcher = pat.matcher(str); while (matcher.find()) { String temp = str.substring(matcher.start(), matcher.end()); str = str.replaceAll(temp, "小寶鴿"); } System.out.println(str); //直接替換了 str = "第9條,數據錯誤,錯誤信息,第jjj哦條哦條我的條件如何?第221條xx"; System.out.println(str); str = str.replaceAll(regex, "小寶鴿"); System.out.println(str); } } ~~~ 提取子字符串和替換文本的例子都在上面的例子代碼里面體現啦 運行結果: ![](https://box.kancloud.cn/2016-03-15_56e77db74f819.jpg) ### (4)正則表達式內容不少,想要短時間全部掌握不可能,入門需要學習哪些呢? 下面,我們先簡單了解下這些語法:? 字符匹配: | 字符 | 描述 | | :-- | :-- | | \d | 匹配數字(0~9) | | \D | 匹配非數字 | | \w | 匹配任意單字符 | | \W | 匹配非單字符 | | \s | 匹配空白字符 | | \S | 匹配非空字符 | | . | 匹配除換行符 \n之外的任何單字符。 | | […] | 匹配括號中任意字符 | | [^…] | 匹配非括號字符 | 重復匹配: | 字符 | 描述 | | :-- | :-- | | {n} | 匹配n次字符 | | {n,} | 匹配n次和n次以上 | | {n,m} | 匹配n次上m次下 | | ? | 匹配0或1次 | | + | 匹配一次或多次 | | * | 匹配0次以上 | | 指明兩項之間的一個選擇。要匹配 |,請使用 \| | 字符定位: | 字符 | 描述 | | :-- | :-- | | ^ | 定位后面模式開始位置 | | $ | 前面模式位于字符串末端 | | \A | 前面模式開始位置 | | \z | 前面模式結束位置 | | \Z | 前面模式結束位置(換行前) | | \b | 匹配一個單詞邊界 | | \B | 匹配一個非單詞邊界 | 轉義匹配: | 字符 | 描述 | | :-- | :-- | | “\”+實際字符 | \ . * + ? ( ) { }^ $ | | \n | 匹配換行 | | \r | 匹配回車 | | \t | 匹配水平制表符 | | \v | 匹配垂直制表符 | | \f | 匹配換頁 | | \nnn | 匹配一個8進制ASCII | | \xnn | 匹配一個16進制ASCII | | \unnnn | 匹配4個16進制的Uniode | | \c+大寫字母 | 匹配Ctrl-大寫字母 | 上面的語法來自于博文:[http://www.cnblogs.com/moss_tan_jun/archive/2010/08/15/1800281.html](http://www.cnblogs.com/moss_tan_jun/archive/2010/08/15/1800281.html) 上面的語法可能有些比較抽象,沒有看懂并沒有關系,日后用到在逐個研究。 了解了上面的語法之后我們來看看這些例子: 讓我們開始第一個驗證,輸入的字符在a-g之間? ~~~ [a-g] ~~~ 輸入的字符在a-g之間并且長度為3? ~~~ [a-g]{3} ~~~ 輸入的字符在a-g之間并且最大長度為3最小長度為1? ~~~ [a-g]{1,3} ~~~ 我如何在匹配像91230456, 01237648那樣的固定8位數? ~~~ ^[0-9]{8}$ ~~~ 驗證像INV190203 或 inv820830那樣的前3位是不區分大小寫的英文字母,剩余8位是數字 在前面的表達式中只能匹配前3個是小寫英文字母的發票編號,如果我們輸入大寫字母那就不能匹配了。所以為了確保前3個字母是不區分大小寫的,我們就要用表達式^[a-zA-Z]{3}。 完整的正則式如下: ~~~ ^[a-zA-Z]{3}[0-9]{7}$ ~~~ 我們可以驗證簡單的網址URL格式嗎? 第一步:檢查是否存在www: ~~~ ^www. ~~~ 第二步:域名必須是長度在1-15的英文字母: ~~~ .[a-z]{1,15} ~~~ 第三部:以.com或者.org結束: ~~~ .(com|org)$ ~~~ 完整的表達式如下: ~~~ ^www[.][a-z]{1,15}[.](com|org)$ ~~~ 讓我們在來看看BCD(其實也就是上面說的3條基本語法)如何驗證email格式 第一步:email開始是長度在1-10的英文字母,最后跟一個”@”: ~~~ ^[a-zA-Z0-9]{1,10}@ ~~~ 第二步:@后面是長度在1-10的英文字母,后面跟一個”.”: ~~~ [a-zA-Z]{1,10}. ~~~ 第三步:最后以.com或.org結束: ~~~ .(com|org)$ ~~~ 最后完整的表達式如下: ~~~ ^[a-zA-Z0-9]{1,10}@[a-zA-Z]{1,10}.(com|org)$ ~~~ 以上正則例子出自博文:[http://www.cnblogs.com/sxwgf/archive/2011/11/17/2252076.html](http://www.cnblogs.com/sxwgf/archive/2011/11/17/2252076.html),該博文還有日期驗證的例子。 上面的一些例子可能看官們能看到懂,但是自己不動手試試,還是不放心,因此下面推薦兩個在線測試正則表達式網站,可以驗證上面的例子! 正則表達式在線測試網站,這兩個網站都可以,挺好用的,但是個人還是推薦前者(雖然界面沒有那么美觀):? [http://tool.chinaz.com/regex/](http://tool.chinaz.com/regex/)? [http://tool.oschina.net/regex/](http://tool.oschina.net/regex/) 博主的正則表達式只是入門,如果上文有任何不正確的地方望評論糾正,不勝感激!
                  <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>

                              哎呀哎呀视频在线观看