正則表達式捕獲分組和非捕獲分組及用法

正則表達式 (regular expression)是一個描述字符模式的對象。 ECMAScript 的 RegExp 類 表示正則表達式,而 String 和 RegExp 都定義了使用正則表達式進行強大的模式匹配和文本 檢索與替換的函數。 捕獲組:把正則表達式中子表達式匹配的內容,保存到內存中以數字編號或顯式命名的組裏,方便後面引用。 例如:正則表達式

var str = "2019-10-28";
var reg = /(\d{4})-(\d{2})-(\d{2})/;
var result = reg.exec(str)
console.log(result[0])
console.log(result[1])
console.log(result[2])
console.log(result[3])
複製代碼

如圖: express

在這裏插入圖片描述
非捕獲分組: 分組匹配以後,不須要的用?: 語法過濾子表達式內容。也就是代碼匹配,可是不保存 代碼以下:

var str = "2019-10-28";
var reg = /(\d{4})-(\d{2})-(?:\d{2})/;
var result = reg.exec(str)
console.log(result[0])
console.log(result[1])
console.log(result[2])
console.log(result[3])
複製代碼

如圖: c#

在這裏插入圖片描述
在jQuery源碼中,曾用到非捕獲組的方法,獲取字符串、標籤、id選擇器來作選擇器表達式,如:

quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/
複製代碼

正則 quickExpr 包含兩個分組,依次匹配 HTML 代碼和 id。若是匹配成功,則數組 match 的第一個元素爲參數 selector,第二個元素爲匹配的 HTML 代碼或 undefined,第三個 元素爲匹配的 id 或 undefined。下面的例子測試了正則 quickExpr 的功能:數組

quickExpr.exec( '#target' );   // ["#target", undefined, "target"]
  quickExpr.exec( '<div>' );      // ["<div>", "<div>", undefined]
  quickExpr.exec( 'abc<div>' );   // ["abc<div>", "<div>", undefined]
  quickExpr.exec( 'abc<div>abc#id' );   // ["abc<div>abc#id", "<div>", undefined]
   quickExpr.exec( 'div' );   // null
   quickExpr.exec( '<div><img></div>' ); // ["<div><img></div>", "<div><img> 複製代碼
相關文章
相關標籤/搜索