JavaScript 正則表達式

正則表達式的組成

  • 正則定界符
  • 原子
  • 元字符
  • 模式修正符

正則定界符

  • 在JS中正則表達式的定界符就是一對/,全部寫在/以內的都是正則的內容。數組

  • 注意:在其餘語言中可使用其餘特殊符號做爲正則定界符。測試

原子

原子是組成正則表達式最基本的單位。任何一個正則表達式至少包含一個原子。code

  • 全部可見和不可見的字符都是原子!
  • 6個特殊原子:
    • \d 表示0-9之間的任意一個數字字符
    • \D 表示除了0-9以外的任意一個字符
    • \s 表示全部不可見字符中的任意一個字符
    • \S 表示全部可見字符中的任意一個字符
    • \w 表示數字,字母和下劃線中的任意一個字符
    • \W 表示數字,字母下劃線以外的任意一個字符

元字符

元字符的做用就是用來修飾原子,使得正則表達式的結構更加靈活可靠。元字符也叫做原子修飾符regexp

[] 原子列表

  • 用戶能夠經過原子列表的方式自定義指定範圍的字符。原子列表依然表示指定範圍字符中的一個字符。對象

  • 注意: 原子列表表示多個字符中的一個字符。內存

[^]排除列表

  • 排除列表是原子列表的提高,能夠限定選取制定字符以外的字符中的一個。字符串

  • 注意: 若是列表(原子/排除列表)中的字符在ASCII碼上是連續的,能夠進行縮寫操做
    • [ABCDEFG] -> [A-G]
    • [2345678] -> [2-8]
    • [abcdefghijklmnopqrstuvwxyz] -> [a-z]

\* 任意數量的指定原子

\+ 一個數量以上的原子

? 表示0個或1個原子

{} 圈定範圍

  • {m} 表示m個原子io

  • {m,} 表示m個以上的原子console

  • {m,n} 表示m-n個數量之間原子

^ 表示字符串必須以正則中指定的字符開頭!

$ 表示字符串必須以正則中指定的字符結尾!

^正則表達式$  精確匹配模式

\b 單詞邊界

表示可以用來分割單詞的字符, 空格,標點符號,特殊字符(除了數字和字母)

\B 非單詞邊界

表示不可以用於分割單詞的字符。  數字和字母

注意:詞邊界和非詞邊界通常只用於英文正則中。

. 表示除了\n以外的任意一個字符

注意:若是正則中須要使用字符。 必須進行轉義  \。
    除此以外,任意在正則表達式中又意義的字符要當作普通字符使用都必須進行轉義操做(。 * + ? [] () ^ $)

() 括號元字符

  • 能夠將多個原子當作一個原子使用,能夠添加元字符修飾。
  • 將()中的內容暫時存於內存當中,方便後期調用。
  • 改變正則的優先級,嚐嚐和|一塊兒使用

| 或運算元字符

  • 表示在|兩側的正則進行二選一操做

模式修正符

  • 對匹配模式進行調節的符號。
  • 模式修正符在定界符的最後使用。
  • var 變量 = /正則內容/模式修正符;

i 忽略英文大小寫

g 全局匹配模式

m 多行匹配模式

.*? 貪婪模式

  • 正則在進行匹配時,從開始位置查找最遠的結束位置,這種模式稱之爲貪婪模式。

  • 在進行HTML標籤相似內容獲取時,貪婪模式會致使整個內容的返回,須要使用非貪婪模式。

  • 固定的書寫規則 : .*? 這種方式就是非貪婪模式

?: 取消暫存內容的做用

  • 取消暫存內容的做用,只留運算優先級的做用
  • ()最前面 加上?: 字符串 例如 (?:/\d/)

正則表達式對象

聲明正則表達式的格式:

var 變量 = /正則規則/模式修正符;
    var a = /\d/g;

使用對象聲明正則表達式:

var 變量 = new RegExp('正則規則','模式修正符');
    var a = new RegExp('\\d', 'g');

\\轉義

成員屬性

source

  • 表示當前正則表達式的正則規則
var a = /\d/g;
var b = a.source;
console.log(b);
輸出:\d

獲取結果不包括在正則表達式文本中使用的分隔斜線,而且它不包括在「g」,「i」 和「m」 屬性。

lastIndex

  • 匹配模式中帶有g修飾符,這個屬性存儲在整個字符串中下一次檢索的開始位置
  • 注意: 僅在g模式下會發生變化,沒有g模式,該屬性永遠爲0

成員方法

exec() 進行一次正則匹配

  • 在g模式下,每一次匹配都會在上一次匹配的位置以後開始繼續匹配
  • 在非g模式下,每次一次匹配都會從字符串的開頭從新匹配。
  • 格式: 正則對象。exec(字符串);
  • exec()match()的區別:
    • 若是在非g模式下,exec()match()除了操做格式不同,結果是同樣的。
    • 在g模式下,exec()依然進行一次匹配,只不過在上次匹配的內容以後開始一次新的匹配
    • 在g模式下,match()是一次性返回字符串中全部符合正則內容組成的數組。

test() 進行正則測試

它的參數是一個字符串,用test( )對某個字符串進行檢測,該方法僅僅是用於測試正則內容是否在字符串中出現,匹配成功返回true,匹配失敗返回false。

compile() 從新編譯正則,垃圾回收再用

  • 格式: 正則對象.compile('正則規則','模式修正符')
  • 該方法主要用於避免再次建立正則對象,將以前的正則對象修改規則以後繼續使用,能夠提升程序效率
相關文章
相關標籤/搜索