摘要:它的語法是被匹配字符串一個正則組成的數組,比如,,該方法返回與匹配鏈條正則數組最后一個正則的匹配內容,或一個空數組。
好像網上介紹JS正則庫的文章不多,可能也是因為復雜的正則匹配很少需要在客戶端運行,所以JS上用的不多,并且我搜JS的正則庫還真沒找到第二個,囧。但它的一些特性挺實用,有興趣的同學可以看看。由于沒花太多時間去琢磨,所以本文只將該庫作簡要介紹,本文用例全部來自它的API文檔。
XRegExp是一個為JS的正則表達式提供擴展功能的庫, 調用之后可以彌補原生JS在正則方面的一些不足,也在很大程度上增強了JS正則的功能。它解決了瀏覽器之間正則的兼容問題,且支持原生ES6正則語法(有關ES6中正則的新特性:參考?New regular expression features in ECMAScript 6)
XRegExp的壓縮版大概4.25K,在性能上,由于XRegExp生成的正則都是原生的正則對象,其表現跟原生正則一樣, 只是在首次創建XRegExp正則的時候需要多點開銷。它的主要特點如下:
XRegExp的主要特性擴展的正則語法,包括支持命名的捕獲組以及更強大的文本替換
增加修飾符(flags)s支持單行模式;x忽略空格以及行注釋;n明確捕獲組模式;A支持21位Unicode匹配
提供一套函數簡化正則處理
解決跨瀏覽器的正則兼容問題
在此基礎上提供擴展(addons)支持更多的正則語法和功能
基本用法XRegExp的最主要的API也就是這個構造函數XRegExp(pattern, [flags]) 其語法如下:
pattern參數為字符型的正則表達式
[flags]為可選的正則修飾符,當然也是字符型,它支持原生的修飾符以及XRegExp中的擴展修飾符(特性中已列出)
返回值為被擴展的正則對象。
比如:
// 使用了‘x’修飾符,所以忽略空格且支持行注釋 //忽略空格指的是正則中的空格被忽略 //(?…)這種寫法即命名的捕獲組 // #...為行注釋 var date = XRegExp("(? [0-9]{4} ) -? # year (? [0-9]{2} ) -? # month (? [0-9]{2} ) # day ", "x"); //這里使用了XRegExp擴展的exec()方法 var match = XRegExp.exec("2015-02-22", date); match.year; // -> "2015"
以上這個栗子?就體現了XRegExp在正則上強大的擴展功能,比如命名的捕獲組,正則注釋等,這從一定程度上彌補了原生JS正則上的不足。
有趣的特性由于我并沒有看完它的所有API文檔, 也是剛接觸這玩意,所以這里只挑幾個我覺得比較實用的特性列舉。
迭代器forEach它的語法格式為XRegExp.forEach(str, regex, callback)
str 被匹配的字符串
regex 傳入的正則
回調函數,該方法每次迭代將傳入回調函數4個參數
當前匹配的數組,并且帶命名的后向引用屬性
當前匹配的索引位置
正在被遍歷的字符串
正在使用的正則對象
該方法遍歷被匹配的字符串,忽略其中正則全局修飾符g,也忽略lastIndex的初始值。
該方法無返回值。
例如:
// 從被匹配的字符串中每次抽取一個數字放入偶數數組 var evens = []; XRegExp.forEach("1a2345", /d/, function (match, i) { if (i % 2) evens.push(+match[0]); }); // evens -> [2, 4]匹配鏈方法matchChain
匹配鏈方法可以從之前的匹配結果中調用下一個正則繼續匹配,就像從一個大范圍中使用不同的正則不斷篩選出你要的數據。
它的語法是XRegExp.matchChain(str, chain)
str 被匹配字符串
一個正則組成的數組,比如[reg1,reg2,...]
該方法返回與匹配鏈條(正則數組)最后一個正則的匹配內容,或一個空數組。
例如:
// 基本用法:抽取每個標記包裹的數字 //(?is)是XRegExp中修飾符前置的語法,它等同于在正則后加修飾符i s XRegExp.matchChain("1 2 3 4 a 56", [ XRegExp("(?is).*?"), /d+/ ]); // -> ["2", "4", "56"] // 返回命名的捕獲組內容(后部引用) html = "XRegExp /i, backref: 1}, {regex: XRegExp("(?i)^https?://(?正則合并方法union[^/?#]+)"), backref: "domain"} ]); // -> ["xregexp.com", "www.google.com"]
該方法可以將需要匹配的字符串或者正則表達式合并為一個正則表達式,帶后部引用的正則在合并時將被重新編碼,其語法格式為XRegExp.union(patterns, [flags])
patterns為一個數組,數組元素可以是要匹配的字符串或正則
可選的修飾符flags
返回值為合并后的正則表達式。
例如:
XRegExp.union(["a+b*c", /(dogs)1/, /(cats)1/], "i"); // -> /a+b*c|(dogs)1|(cats)2/i
大致先寫這么多,還有什么使用21位unicode匹配表情符也蠻好玩的,再看到什么更好玩的繼續補上吧。
以上內容主要還是大致翻譯API原文加上我自己的一些理解,這篇介紹都很簡略,看著可能有點不太清楚,如有什么錯漏還請指出。查看更詳細的資料或者下載直接去它的主頁吧。
XRegExp的主頁:?XRegExp Github :?XRegExp 3.0.0
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78298.html
摘要:給開發人員使用的正則表達式測試儀。一個令人非常興奮的項目,可以改變開發人員使用正則表達式的方式。它的目的是使正則表達式易于閱讀和使用命令編寫。實時的正則表達式測試工具,支持,,和。 正則表達式是每個程序開發人員的必備技能。任何開發項目,不管使用什么編程語言,都需要從給定的數據提取值并進行驗證。例如對輸入內容的驗證,過濾 URL 變量等等,正則表達式處理這樣的任務很容易,而且只需要很少的...
摘要:擴展微信小程序框架功能是狀態容器,提供可預測化的狀態管理。擴展微信小程序框架功能日期時間是一個的日期時間處理工具類,其對于的日期時間處理功能非常強悍和全面。 通過第三方 JavaScript 庫,擴展微信小程序框架功能。 擴展微信小程序框架功能(1)——Promise ES6 對 Promise 有了原生的支持,但微信開發者工具更新版本(0.11.112200)后, 移除了開發者工具...
摘要:原文地址地址基礎工具編譯類型檢查代碼分析引擎兼容性檢查器單元測試單元測試斷言庫單元測試數據模擬測試代碼格式化整潔性能測試可視化,靜態分析,復雜性,覆蓋工具優化混淆可共享可運行的代碼編輯器在線正則表達式編輯器可視化工具創作公約工具可視 原文地址git地址 基礎工具 accounting.js async axios chance date-fns format.js immutable...
摘要:下例實現了一個數組的迭代器在中,可迭代數據結構比如數組都必須實現一個名為的方法,該方法返回一個該結構元素的迭代器。原話是還可以傳遞返回值。 前記 按照規劃,明年年中,ECMAScript 6(ES6)就要正式發布了。 最近抽空看了Dr. Axel Rauschmayer的幾篇文章和演講PPT,對新特性有了些了解。 趁沒忘,抓緊記錄下,夾雜自己的感受。 計劃分三部分: 新語法...
閱讀 1778·2023-04-26 01:41
閱讀 3077·2021-11-23 09:51
閱讀 2740·2021-10-09 09:43
閱讀 9044·2021-09-22 15:13
閱讀 2457·2021-09-07 09:59
閱讀 2629·2019-08-30 15:44
閱讀 1137·2019-08-30 12:45
閱讀 2621·2019-08-30 12:43