摘要:則是將作為一組,表示出現多次。如果沒有使用標示,則僅返回第一個完整匹配及其相關的捕獲組。構造函數的全局屬性到存儲了分組匹配的結果。
感謝
本文參考《正則表達式迷你書》
分組和分支結構 分組括號可以提供分組的功能。/a+/, 標示a出現多次。/(ab)+/, 則是將ab作為一組,表示ab出現多次。
分組引用使用括號可以實現數據提取和替換操作。我們以匹配日期(yyyy-mm-dd)為例
// 無括號版本 var reg1 = /d{4}-d{2}-d{2}/
// 有括號版本 var reg2 = /(d{4})-(d{2})-(d{2})/
正則引擎在匹配的過程中,會存儲每一個分組匹配到的數據
提取分組數據 match方法match接受一個正則表達式作為參數。如果正則表達式中有g標示, 將返回與完整正則表達式匹配的所有結果,但不會返回捕獲組。如果沒有使用g標示,則僅返回第一個完整匹配及其相關的捕獲組。
var regex = /(d{4})-(d{2})-(d{2})/g var string = "2017-06-12 2017-06-12" // ["2017-06-12", "2017-06-12"] // 返回與完整正則表達式匹配的所有結果, 不含分組的結果 string.match(regex)
var regex = /(d{4})-(d{2})-(d{2})/ var string = "2017-06-12 2017-06-12" // 只返回第一個完整匹配和其分組 // ["2017-06-12", "2017", "06", "12", index: 0, input: "2017-06-12 2017-06-12", groups: undefined] string.match(regex)exec方法
exec方法接受一個字符串作為參數。如果exec匹配失敗將會返回null, 如果匹配成功exec方法將會返回一個數組。
返回的數組將完全匹配成功的文本作為第一項,而分組匹配的結果在數組位置0的后面。返回的結果同時擁有index屬性, 標示了匹配字符為于原始字符的索引。input屬性則是原始的字符串。
注意當正則對象是否包含g返回結果是不一樣的。如果正則中含有g標示, 那么正則對象的lastIndex(下一次匹配開始的位置), 會更新。而如果不含有g, 正則的lastIndex不會更新。
var regex = /(d{4})-(d{2})-(d{2})/ var string = "2017-06-12 2017-06-12" // ["2017-06-12", "2017", "06", "12", index: 0, input: "2017-06-12 2017-06-12", groups: undefined] // regex.lastIndex === 0 regex.exec(string) // ["2017-06-12", "2017", "06", "12", index: 0, input: "2017-06-12 2017-06-12", groups: undefined] // regex.lastIndex === 0 regex.exec(string)
var regex = /(d{4})-(d{2})-(d{2})/g var string = "2017-06-12 2017-06-12" // ["2017-06-12", "2017", "06", "12", index: 0, input: "2017-06-12 2017-06-12", groups: undefined] regex.exec(string) // ["2017-06-12", "2017", "06", "12", index: 11, input: "2017-06-12 2017-06-12", groups: undefined] // regex.lastIndex === 21 regex.exec(string)RegEx
我們也可以通過RegEx全局的構造函數來獲取分組匹配的結果。構造函數的全局屬性$1到$9存儲了分組匹配的結果。
var regex = /(d{4})-(d{2})-(d{2})/g var string = "2017-06-12 2017-06-12" // 任何正則操作即可 regex.exec(string) // "2017" RegExp.$1替換分組數據
我們可以通過replace方法配合分組匹配的結果, 實現替換分組數據
replacestr.replace(regexp|substr, newSubStr|func)
regexp 一個正則表達式對象,該正則所匹配的內容會被replace的第二個參數(或者函數的返回值)替換掉
substr 當str中含有substr, 會被第二個參數替換, 僅有第一個匹配項會被替換
newSubStr 用于替換掉第一個參數在原字符串中的匹配部分的字符串。該字符串中可以內插一些特殊的變量名(見下表)
func 函數的返回值將替換掉第一個參數匹配到的結果
變量名 | 含義 |
---|---|
$1, $2, $3…… | 第n個分組匹配的結果 |
$` | 插入當前匹配的子串左邊的內容 |
$" | 插入當前匹配的子串右邊的內容 |
$& | 當前匹配的子串 |
// "
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103163.html
摘要:為了方便廣大的開發者,特此統計了網上諸多的免費,為您收集免費的接口服務,做一個的搬運工,以后會每月定時更新新的接口。將長段中文切詞分開。 為了方便廣大的開發者,特此統計了網上諸多的免費API,為您收集免費的接口服務,做一個api的搬運工,以后會每月定時更新新的接口。有些接口來自第三方,在第三方注冊就可以成為他們的會員,免費使用他們的部分接口。 百度AccessToken:針對HTTP ...
摘要:原型模式平行的繼承層次使用工廠模式在大型設計中,必須去維護大量的產品類。上文中,稱之為特殊的耦合在這里我們介紹一種其抽象工廠模式的變體原型模式。面向對象設計模式目錄 原型模式 平行的繼承層次使用工廠模式在:大型設計中,必須去維護大量的產品類。(上文中,稱之為特殊的耦合) 在這里我們介紹一種其抽象工廠模式的變體:原型模式。它使用clone關鍵詞,來復制具體產品類,使得具體產品類能完成自我...
摘要:先看一張來自于菜鳥教程的定義四種形式,加和不加有什么區別,區別就是捕獲元與非捕獲元,表現形式就是用方法去匹配,捕獲組會單純保存在一組變量中。捕獲元與非捕獲元搞懂了,那與啥區別呢,答案,兩個區別。 想讀懂世間所有的那些變態正則表達式?做夢,年紀輕輕,想啥呢,盡自己最大努力學就行 引子 JS學了用了也快一兩年了,對象啥的找到了也會用了,繼承啥的也入門了,但看別人的框架代碼,總是會隨時卡殼,...
摘要:和后起之秀是文檔類中的佼佼者。因為部分作者提出延期申請,且恰逢春節假期,本次舉辦方考慮到各方因素,特此將截稿日期延期至月號。 大數據包含大利潤,對于一些數據量龐大的企業,高擴展的非關系型數據庫的使用往往已經超過關系型數據庫,而這種新型數據庫我們稱之為NoSQL。MongoDB和后起之秀SequoiaDB是文檔類NoSQL中的佼佼者。 鑒于這兩種數據庫(MongoDB和SequoiaD...
閱讀 1748·2021-10-13 09:39
閱讀 1317·2019-08-30 13:58
閱讀 1412·2019-08-29 16:42
閱讀 3561·2019-08-29 15:41
閱讀 2991·2019-08-29 15:11
閱讀 2470·2019-08-29 14:10
閱讀 3405·2019-08-29 13:29
閱讀 2087·2019-08-26 13:27