1. 程式人生 > 實用技巧 >TypeScript RegExp型別

TypeScript RegExp型別

RegExp建構函式建立了一個正則表示式物件,用於將文字與一個模式匹配。

語法如下:

/pattern/flags
new RegExp(pattern[, flags])
RegExp(pattern[, flags])
flags: i = 忽略大小寫, m = 多行匹配, g = 全域性匹配

有兩種方法來建立一個 RegExp 物件:一是字面量、二是建構函式。

字面量方式的引數不使用引號,而建構函式的引數需要使用引號。

// RegExp 型別例項
/ab+c/i;
new RegExp('ab+c', 'i');
new RegExp(/ab+c/, 'i');

正則表示式中特殊字元的含義(一):

.   //匹配任意單個字元
\d  //匹配任意阿拉伯數字。等價於[0 - 9]
\D  //匹配任意一個不是阿拉伯數字的字元。等價於[^ 0 - 9]
\w  //匹配任意字母數字字元,還包括下劃線。等價於[A - Za - z0 -9_]
\W  //匹配任意不是字母數字下劃線的字元。等價於[^ A - Za - z0 -9_]
\s  //匹配一個空白符,包括空格、製表符、換頁符、換行符和其他 Unicode 空
\t  //匹配一個水平製表符(tab)
\r  //匹配一個回車符
\n  //匹配一個換行符

正則表示式中特殊字元的含義(二):

(x)     //匹配 x 並且捕獲匹配項
[xyz]   //匹配一個字元集合,匹配集合中的任意一個字元
[^xyz]  //匹配任意不在括號內的字元
[0-9]   //匹配0到9區間內的任意一個字元
[a-z]   //匹配a到z區間內的任意一個字元
^       //匹配輸入開始
$       //匹配輸入結尾

正則表示式中特殊字元的含義(三):

x*      //匹配前面的模式 x 0 或多次
x+      //匹配前面的模式 x 1 或多次
x?      //匹配前面的模式 x 0 或 1 次
x|y     //匹配 x 或 y
x{n}    //n 是一個正整數。前面的模式 x 連續出現 n 次時匹配
x{n,}   //n 是一個正整數。前面的模式 x 連續出現至少 n 次時匹配
x{n,m}  //n 和 m 為正整數。前面的模式 x 連續出現至少 n 次,至多 m 次時匹配

正則表示式例項程式碼:

let re = /(\w+)\s(\w+)/;
let str = "John Smith";
let newstr = str.replace(re, "$2, $1");
console.log(newstr);    // => "Smith, John"

let result = /^\d{4}-\d{2}-\d{2}$/.test('2019-10-01');
console.log(result);    // => true

let result2 = /[a-z]{4,5}/i.test('32_Abc333sss');
console.log(result2)    // => false

const text = "你好,China 中國";
let regex = /[\u4E00-\u9FA5\uF900-\uFA2D]{2}/g;
let match = regex.exec(text);
console.log(match);     // => [ '你好', index: 0, input: '你好,China 中國' ]
let match2 = regex.exec(text);
console.log(match2);    // => [ '中國', index: 9, input: '你好,China 中國' ]