js正則表達式


一.正則表達式(規則表達式)
        + 由我們自己書寫規則
        + **專門用來檢測一個字符串是否符合我書寫的標准**
        + 一般都是用在 表單驗證 / 從字符串中獲取某些內容

 

二. 創建正則表達式的方式
         1. 字面量創建
          var reg = /abcd/
        2. 內置構造函數創建
          var reg = new RegExp('abcd')
      正則表達式是一個復雜數據類型
 
      倆個創建方法的區別
      1. 字面量直接寫
        + 不能進行字符串拼接
      2. 內置構造函數的方式
        + 第一個參數是寫在正則內部的符號
          + 當你需要寫一些正則的元字符的時候
          + 需要寫成 \\d
        + 第二個參數是標識符
          + 可以把多個標識符寫在一個字符串里面
        + 可以進行字符串拼接
    // var reg1 = /abcd/ig
    // console.log(reg1)

    // 表示我想正則中 填充的內容是一個換行
    // var reg2 = new RegExp('\n', 'ig')
    // console.log(reg2)

    // 表示你向正則中填充了一個 \n  => var reg = /\n/
    // var reg2 = new RegExp('\\d{2}', 'ig')
    // console.log(reg2)
 
三.正則表達式就是用來檢測字符串是不是滿足要求的
       1. test() 用來檢測字符串
        語法: 正則表達式.test(字符串)
        返回值: 如果字符串滿足我寫的規則,那么返回 true,否則返回 false
    // 需要包含字符 abcd
    var reg = /abcd/
    var str = 'sfdasfsgefsa bcdasfjifgerjgnen'
    // 用剛才的正則取檢測 str 這個字符串
    var res = reg.test(str)
    console.log(res)
 
四.元字符
      1. `.`(點)
        + 非換行的任意字符
      2. `\`(斜線)
        + 轉譯
        + 把有意義的變成沒有意義的
        + 把沒有意義的變成有意義的
      3. \s                                 (space 空格)
        + 空格
      4. \S
        + 非空格
      5. \d                                 (digit  (從0~9的任意一個)數字)
        + 數字
      6. \D
        + 非數字
      7. \w                                   (word  單詞)                     
        + 數字字母下划線
      8. \W
        + 非數字字母下划線
// 表示字符串里面包含着非換行的其他字符都可以
    // var reg = /./
    // var str = 'a\n'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串里面需要包含着一個 . 字符
    // var reg = /\./
    // var str = 'ab.cd'
    // var res = reg.test(str)
    // console.log(res)


    // 表示字符串中需要包含一個 空格
    // var reg = /\s/
    // var str = 'abcd s'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要包含一個非空格
    // var reg = /\S/
    // var str = '   a   '
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要包含一個數字
    // var reg = /\d/
    // var str = 'abcd  sferg'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要包含一個非數字
    // var reg = /\D/
    // var str = '123asdj'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要包含一個 字母也行數字也行下划線也行
    // var reg = /\w/
    // var str = '@#¥%……&'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要出現一個 非數字字母下划線 的內容
    var reg = /\W/
    var str = 'fegsasd……1231231___'
    var res = reg.test(str)
    console.log(res)
五.邊界符
       + 用來限制正則的邊界,也是限制字符串的邊界

      1. ^
        + 開始
      2. $
        + 表示結束
      + 在使用正則的表示表示以什么開頭以什么結尾
// 表示字符串需要以 a 開頭,a 要和 bcd 連着
    // var reg = /^abcd/
    // var str = 'abcdkjhklhksadadasad'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串需要以 d 結尾, abc 需要連着 d
    // var reg = /abcd$/
    // var str = 'kjhhlkhhkabcdaskjdhkabcd'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串從開頭到結尾只能由 abcd 四個字母組成,並且順序不能變
    // var reg = /^abcd$/
    // var str = 'abcd'
    // var res = reg.test(str)
    // console.log(res)

    // var reg = /^\d\d\d\d\d$/
    // var str = '111456'
    // var res = reg.test(str)
    // console.log(res)
六.限定符
         + 用來描述每一個正則 元字符 出現的次數

      1. +(加號)
        表示 1 到 正無窮次
      2. *(星號)
        表示 0 到 正無窮次
      3. ?(問號)
        表示 0 或者 1 次
      4. {n}
        表示 n 次
      5. {n,}
        表示至少 n 次 {1,}
        {1,} 等價於 +
        {0,} 等價於 *
      6. {n,m}
        表示 至少 n 次,至多 m 次
        {0,1} 等價於 ?
  // 表示字符串只能由 一位以上的數字組成
    // var reg = /^\d+$/
    // var str = '123454'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要出現數字 0 到 正無窮次
    // var reg = /\d*/
    // var str = 'abcdefg123456'
    // var res = reg.test(str)
    // console.log(res)

    // 字符串只能由 0 到多個數字組成
    // var reg = /^\d*$/
    // var str = ''
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串中需要出現數字 0 次 或者 1 次
    // var reg = /\d?/
    // var str = 'adasdsd1234'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串只能由 0 個 或 1 個數字組成
    // var reg = /^\d?$/
    // var str = '123'
    // var res = reg.test(str)
    // console.log(res)


    // 表示字符串里面需要包含一個 三個數字連着 的字符片段
    // var reg = /\d{3}/
    // var str = 'abcdefg123456'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串只能由 三位數字 組成
    // var reg = /^\d{3}$/
    // var str = '12345'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串從開頭到結尾只能由三位以上的數字組成
    // var reg = /^\d{3,}$/
    // var str = '12345676889'
    // var res = reg.test(str)
    // console.log(res)

    // 表示字符串只能由 6 ~ 16 位數字組成
    var reg = /^\d{6,16}$/
    var str = '1234567890123456'
    var res = reg.test(str)
    console.log(res)

    // 在谷歌應用商店搜索 FEHelper
七.特殊符號
       1. () 小括號
        + 表示一個集合
        + 在捕獲的時候單獨捕獲(講方法的時候說)
      2. []
        + 表示一個任意選擇的集合
        + 出現在中括號內的內容出現任意一個就行
      3. [^]
        + 表示一個非任意選擇集合
        + 出現在這個符號中的任意一個字符都不能出現
      4. |
        + 或
          + || 邏輯或
          + |  占位或
        + 一般和小括號一塊使用
      5. -(中划線,英文狀態的中划線)
        + 到(至)
        + 一般和中括號一起使用
        + 必須是 ASCII 編碼挨着的
        + [0-9] 等價於 \d
        + [^0-9] 等價於 \D
        + [0-9a-zA-Z_] 等價於 \w
        + [^0-9a-zA-Z_] 等價於 \W
 // 表示字符串從開頭到結尾需要 abcdabcd
    // var reg = /^(abcd){2}$/
    // var str = 'abcdabcd'
    // var res = reg.test(str)
    // console.log(res)


    // 表示字符串從開頭到結尾,只能由 a 或者 b 或者 c 或者 d 組成,並且只能出現兩次
    // var reg = /^[abcd]{2}$/
    // var str = 'ad'
    // var res = reg.test(str)
    // console.log(res)

    // 表示這一位字符不能是 a 不能是 b 不能是 c 不能是 d,其他的都行
    // var reg = /^[^abcd]$/
    // var str = 'e'
    // var res = reg.test(str)
    // console.log(res)


    // 表示這個位置寫的內容可以是 163 可以是 162 可以是 sina 可以是 qq
    // var reg = /^(163|162|sina|qq)$/
    // var str = '163'
    // var res = reg.test(str)
    // console.log(res)

    // var reg = /^[0-9]$/
    // var str = 'A'
    // var res = reg.test(str)
    // console.log(res)
八.正則的方法
         1. 一個叫做 匹配
          + 就是檢測看看字符串是否符合規則
          + test()
        2. 一個叫做 捕獲
          + 就是把字符串中符合要求的那一段字符給我單獨拿出來
          + exec()

        exec
          語法: 正則表達式.exec(要捕獲的字符串)
          返回值: 是一個數組
            有一些內容
            數組第 0 項 是按照正則要求捕獲出來的內容
            index: 表示我找到的這個字符片段是從哪一個索引開始的
            input: 表示原始字符串
          因為正則的懶惰性
            捕獲完畢以后,下次捕獲的時候還是從索引 0 開始查找
          當正則有了標識符 g 的時候
            會在第二次捕獲的時候,從第一次捕獲的結尾開始查找
            如果沒有找到會返回 null
            當他返回 null 的時候,那么下一次的捕獲又會從索引 0 開始捕獲

        由一個正則的特性
          叫做懶惰性

        正則的標識符
          + 標識符是寫在正則的后面的

        1. g 表示全局的意思
 // var reg = /\d{3}/
    // var str = 'abcdefg123abcdefg234abcdefg456asdasd'
    // var res = reg.exec(str)
    // var res2 = reg.exec(str)
    // console.log(res)
    // console.log(res2)


    // var reg = /\d{3}/g
    // var str = 'abcdefg123abcdefg234abcdefg456asdasd'
    // var res = reg.exec(str)
    // var res2 = reg.exec(str)
    // var res3 = reg.exec(str)
    // var res4 = reg.exec(str)
    // var res5 = reg.exec(str)
    // console.log(res)
    // console.log(res2)
    // console.log(res3)
    // console.log(res4)
    // console.log(res5)
 
 
 標識符
        - 對正則的特殊修飾

      1. g
        + 全部捕獲
        + 抵消正則的懶惰性
      2. i
        + 忽略大小寫
        + 正則在檢測字符串的時候不管字母的大小寫
    // var reg = /[a-z]/i
    // var str = '1234A1234'
    // var res = reg.test(str)
    // console.log(res)
 
 
 字符串和正則合作的方法
      1. search()
        語法: 字符串.search(正則)
        返回值:
          如果找到,返回的是字符片段開始的索引
          如果沒有,就是返回 -1
      2. match()
        語法: 字符串.match(正則)
        返回值:
          當正則沒有全局標識符 g 的時候,和 exec 方法一樣
          當正則有全局標識符 g 的時候,返回值是捕獲到的每一個內容(以一個數組的形式返回)
      3. replace()
        語法: 字符串.replace(正則)
        返回值: 替換好的字符串
          沒有全局標識符 g 的時候是只替換一個
           有全局標識符 g 的時候,會全部替換


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM