1. 程式人生 > 其它 >JavaScript基礎學習-正則表示式

JavaScript基礎學習-正則表示式

正則表示式

ECMAScript 通過RegExp 型別支援正則表示式。

正則表示式使用類似Perl 的簡潔語法來建立:
let expression = /pattern/flags;

說明:每個正則表示式可以帶零個或多個flags(標記),用於控制正則表示式的行為。下面給出了表示匹配模式的標記。

  • g:全域性模式,表示查詢字串的全部內容,而不是找到第一個匹配的內容就結束。
  • i:不區分大小寫,表示在查詢匹配時忽略pattern 和字串的大小寫。
  • m:多行模式,表示查詢到一行文字末尾時會繼續查詢。
  • y:粘附模式,表示只查詢從lastIndex 開始及之後的字串。
  • u:Unicode 模式,啟用Unicode 匹配。
  • s:dotAll 模式,表示元字元.匹配任何字元(包括\n 或\r)。

例:
// 匹配字串中的所有"at"
let pattern1 = /at/g;
// 匹配第一個"bat"或"cat",忽略大小寫
let pattern2 = /[bc]at/i;
// 匹配所有以"at"結尾的三字元組合,忽略大小寫
let pattern3 = /.at/gi;

與其他語言中的正則表示式類似,所有元字元在模式中也必須轉義,包括:( [ { \ ^ $ | ) ] } ? * + .

例:
// 匹配第一個"bat"或"cat",忽略大小寫
let pattern1 = /[bc]at/i;
// 匹配第一個"[bc]at",忽略大小寫
let pattern2 = /[bc]at/i;

RegExp 例項

RegExp 例項的主要方法是exec(),主要用於配合捕獲組使用。這個方法只接收一個引數,即要應
用模式的字串。如果找到了匹配項,則返回包含第一個匹配資訊的陣列;如果沒找到匹配項,則返回
null。返回的陣列雖然是Array 的例項,但包含兩個額外的屬性:index 和input。index 是字串
中匹配模式的起始位置,input 是要查詢的字串。這個陣列的第一個元素是匹配整個模式的字串,
其他元素是與表示式中的捕獲組匹配的字串。如果模式中沒有捕獲組,則陣列只包含一個元素。

let text = "mom and dad and baby";
let pattern = /mom( and dad( and baby)?)?/gi;
let matches = pattern.exec(text);
console.log(matches.index); // 0
console.log(matches.input); // "mom and dad and baby"
console.log(matches[0]); // "mom and dad and baby"
console.log(matches[1]); // " and dad and baby"
console.log(matches[2]); // " and baby"