1. 程式人生 > 實用技巧 >RegExp正則表示式(三)–js中正則表示式的定義

RegExp正則表示式(三)–js中正則表示式的定義

在js中,RegExp正則表示式的定義有兩種方式:一種是普通方式,另一種是建構函式方式。無論是那種定義正則表示式的方式,它們都會返回RegExp物件。


普通方式定義正則表示式的格式

語法:

var 變數名 = /正則表示式/附加引數
  • 1

附加引數是用來擴充套件表示式含義的,目前有三種附加引數。分別是:

g:表示式進行全域性匹配
i:匹配時不區分英文的大小寫
m:可以進行多行匹配

其中全域性匹配(g)是指,匹配字串時,直到所有字串全部查詢完成才會停止匹配。

而非全域性匹配是指,匹配字串時,有一處匹配成功或查詢至字串的結尾,其中只要有一個條件滿足時,就停止匹配。

m表明表示式可以進行多行匹配。但這個引數只有當表示式中使用”^”(以……開頭)或”$”(以……結尾)特殊字元時才會起作用,如果表示式中沒有”^”或”$”特殊字元時,加不加m引數都不影響匹配的結果。

這三種引數可以隨意組合,也可以不加附加引數。預設的定義正則表示式(即不加附加引數)是非全域性匹配,區分大小寫,單行匹配。

舉個栗子
如:

//啟用全域性匹配,區分大小寫,多行匹配)
 var reg = /\w/gim;
  • 1
  • 2
//啟用預設的附加引數
 var reg = /\w/;
  • 1
  • 2

有如下文字:

acbbfff
abccff

如果採用/^a./g,則匹配結果為”ac”;
如果採用/^a./gm,則匹配結果為”ac”和”ab”。
如果採用/^a./m,則匹配結果為”ac”
如果採用/a./gm,則匹配結果為”ac”和”ab”
如果採用/a./g,則匹配結果為”ac”和”ab”
  • 1
  • 2
  • 3
  • 4
  • 5

建構函式方式定義正則表示式的格式

語法:

var 變數名 = new RegExp(“正則表示式”,”附加引數”);
  • 1

var 變數名 = new RegExp(/正則表示式/附加引數);
  • 1

使用方式和普通方式的一樣。
如:

var reg = new RegExp(“\w*”,”gim”);
  • 1
var reg = new RegExp(/\w*/gim);
  • 1

總結
以上兩種定義正則表示式的區別:
普通的定義方式,表示式必須是一個常量字串
如:

var reg = /a./gim;
  • 1

而建構函式的定義方式,表示式可以是常量,也可以是變數
如:

var t1 = “a.”;
var reg1 = new RegExp(t1,”gim”); //表示式是變數
var t2 = “a\\w”;
var reg2 = new RegExp(t2,”gim”); //表示式是變數
  • 1
  • 2
  • 3
  • 4

var reg = new RegExp(/a./gim); //表示式是常量
  • 1

附註

  • 無論是普通的正則表示式定義還是建構函式的正則表示式定義,其返回值都是RegExp物件。

  • 如果表示式是變數字串時,\w,\d這一類匹配字符集的特殊字元,要寫成”\\w”,”\\d”這種格式。原因是,字串在解析時會把”\”符號解析成轉義字元,如果要使其解析成”\”字元,就要寫成”\\”