1. 程式人生 > >正則表達式 RegExp

正則表達式 RegExp

字符串分割 內容 console 對象方法 unicode NPU true 實例 express

  • 正則表達式:即使用模式匹配文本字符串的表達式。

在JavaScript中,創建正則表達式有兩種方式:

  1. 字面量方法:   var expression=/pattern/flags;     //斜線類似於字符串中的雙引號,作用:分隔。
  2. 創建RegExp對象實例:  var expression=new RegExp(“test”);     //傳入正則表達式字符串。

    註意:優先使用字面量語法,當需要在運行時動態創建字符串來構建正則表達式時,使用構造函數方法。

匹配模式支持5種修飾符:(在字面量末尾添加修飾符,或者作為第2 個參數傳給RegExp構造函數)

  1. g(全局模式):模式將應用於所有字符串,而非發現第一個匹配項後停止。
  2. i(不區分大小寫模式):在確定匹配項時忽略模式與字符串的大小寫。
  3. m(多行模式):到達一行文本末尾還會繼續查找下一行中是否存在與模式匹配的項。
  4. y:開啟粘連匹配。
  5. u:允許使用Unicode點轉義符。

正則表達式就是模式和3個標誌的組合體。

  • 術語和操作符
  • 精準匹配
  • 匹配字符集 [ ]

    [^abc]:匹配除a,b,c以外的任意字符。

[abc]:匹配a,b,c中的任意一個字符。

[a-z]:中橫線 表示按字母順序從a到z之間所有字符的集合。

  • 轉義

當操作符想要表達它本身時,例如[],^等,使用\匹配。

  • 起止符號

()表示匹配字符串的開始,^表示以後面的字符串開頭,$表示字符串的結束。

  • 重復出現

? 在字符串後添加,指定可選字符可以出現0次或1次。

+ 在字符串後添加,指定可選擇符可以出現1次或多次。

* 在字符串後添加,指定可選擇符可以出現0次或1次或多次

{} 使用括號指定重復次數。如:/a{4}/匹配4個連續的字符a。

{4,10} 指定重復次數的範圍。

{4,} 匹配4個或更多的連續字符。

  • 預定義字符集

\t 水平制表符 \b 空格 \f制頁符 \r回車符 \n換行符 .匹配除換行符之外的任意字符 \d匹配任意十進制字符 \D匹配除了十進制數字外的任意字符。

\w 匹配任何字母,數字和下劃線 \W 匹配任何除了字母,數字和下劃線之外的字符 \s 匹配任何空白字符 \S 匹配除空白字符外的任意字符 \b匹配單詞邊界 \B匹配非單詞邊界

  • 或操作符(OR)

使用豎線 | 表示或。可以匹配a或b :/a|b/。

  • RegExp 對象方法(正則表達式在前,字符串為參數
  • RegExp 對象有 3 個方法:test()、exec()、 compile()。
  1. exec():專門為捕獲組而設計的。返回值包含:第一個匹配項信息的數組(在沒有匹配項的情況下返回null),數組包含兩個屬性:index和input。index表示匹配項出現在字符串中的位置,input表示應用正則表達式的字符串。
    1     var expression=/e/g;
    2     var str="the best thing in life is free";
    3     console.log(expression.exec(str));

  2. test() 方法檢索字符串中的指定值。返回值是 true 或 false。
    1     var expression=/e/g;
    2     var str="the best thing in life is free";
    3     console.log(expression.test(str));  //true

  3. compile() 方法用於改變 RegExp。compile() 既可以改變檢索模式,也可以添加或刪除第二個參數。
  • 正則表達式的String對象方法(字符串在前 正則表達式為參數):
  • string對象方法:search(),match(),replace(),split().
  1. search():檢索與正則表達式相匹配的值。 返回值:stringObject 中第一個與 regexp 相匹配的子串的起始位置。
    stringObject.search(regexp)

  2. match():找到一個或多個正則表達式的匹配。 返回值:存放匹配結果的數組。該數組的內容依賴於 regexp 是否具有全局標誌 g。
    1 stringObject.match(searchvalue)
    2 stringObject.match(regexp)
  3. replace():替換與正則表達式匹配的子串。返回值:一個新的字符串。經過替換後的字符串。
    stringObject.replace(regexp/substr,replacement)
  4. split():把字符串分割為字符串數組。seperator :字符串或正則表達式,從該參數指定的地方分割 stringObject。
    stringObject.split(separator,howmany)

正則表達式 RegExp