RegExp正則表示式(三)–js中正則表示式的定義
阿新 • • 發佈:2020-11-13
在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”這種格式。原因是,字串在解析時會把”\”符號解析成轉義字元,如果要使其解析成”\”字元,就要寫成”\\”