JS之正則表達式相關

正則概述

  • 定義: 規定字符串中字符出現規則的表達式
  • RegExp對象: 封裝了一條正則表達式, 提供了使用正則表達式驗證和查找的方法
  • 如何創建正則表達式對象:
    • var exp = /正則表達式/gi;
    • var exp = new RegExp(“正則表達式”,”gi”);
      • 正則表達式中所有\都要寫成\
  • 貪婪模式: 默認情況下,正則表達式都會匹配儘量長的字符串
  • 懶惰模式: 只匹配最短的符合條件的字符串
    • 貪婪模式轉懶惰模式方法: 量詞後加?

正則使用

  • 何時使用: 查找、驗證、替換、切割
  • 規則:
    • 最簡單的正則表達式: 關鍵詞原文 —— 必須和原文完全匹配
    • 備選字符集: 規定某一位字符的備選字符列表, 必須且只能多選一
      • 如: 我[愛恨]你
      • 如果備選字符的unicode號連續, 可用-符號連接開頭字符和結尾字符
        • 如: [0-9]
      • [^…]: 表示否定字符集
    • 預定義字符集: 針對常用的備選字符集提供的簡化符號
      • \d: 數字
      • \w: 字母數字或下劃線
      • \s: 空字符, 空格、製表符、換行
      • .: 除換行外, 其餘所有字符
    • 量詞: 規定字符集出現的字數, 默認一個量詞, 僅修飾左側緊鄰的字符集
      • 確定數量
        • {m,n} : 至少m個, 至多n個
        • {m,} : m個以上
        • {m} : 必須m個
      • 不確定數量
        • * : 可有可無, 多了不限
        • + : 1個以上
        • ? : 可有可無, 最多一個
    • 選擇和分組
      • 選擇: | 讀作”或”
      • 分組: ()
      • 何時使用: 如(+86|0086)?\s*1[34578]\d{9}
    • 指定匹配位置
      • 開頭: ^
      • 結尾: $
      • 何時使用: 驗證時必須前加^後加$
    • 零寬斷言
      • (?!exp)爲零寬斷言, 表示斷言之後不能爲exp

正則API

  • 查找
    • var arr = exp.exec(str); //同時獲得關鍵字的內容和位置
      • exec每次只能找到下一個匹配的關鍵詞
      • arr[0]保存了本次找到的關鍵詞內容, 如果找不到, 返回null
      • arr.index屬性保存本次找到的關鍵詞的首字母位置
  • 驗證
    • var bool = exp.test(str); //驗證str是否符合exp的格式
      • 符合返回true, 不符合返回flase
    • 何時使用
      • 驗證格式時
    • 如何使用
      • 可直接放入if中, 作爲條件
  • 獲得本次查找結果中的部分內容: 2步
    1. 在正則表達式中用(), 包裹住需要獲取的部分
    2. 在本次查找的同時, 使用RegExp.$n, 獲得第n個括號中匹配的子內容
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章