XRegExp 是一個開源的JavaScript 庫提供一個參數(shù)化、可擴(kuò)展的支持各種瀏覽器的正則表達(dá)式的實(shí)現(xiàn)庫,支持附加語法、標(biāo)志以及方法。
XRegExp
XRegExp是一個為JS的正則表達(dá)式提供擴(kuò)展功能的庫, 調(diào)用之后可以彌補(bǔ)原生JS在正則方面的一些不足,也在很大程度上增強(qiáng)了JS正則的功能。它解決了瀏覽器之間正則的兼容問題,且支持原生ES6正則語法。
XRegExp的主要特性:
擴(kuò)展的正則語法,包括支持命名的捕獲組以及更強(qiáng)大的文本替換
增加修飾符(flags)s支持單行模式;x 忽略空格以及行注釋;n 明確捕獲組模式;A 支持21位Unicode匹配
提供一套函數(shù)簡化正則處理
解決跨瀏覽器的正則兼容問題
在此基礎(chǔ)上提供擴(kuò)展(addons)支持更多的正則語法和功能
XRegExp 使用
XRegExp 的最主要的 API 是構(gòu)造函數(shù),語法如下:
XRegExp(pattern, [flags])
pattern參數(shù)為字符型的正則表達(dá)式
[flags]為可選的正則修飾符,當(dāng)然也是字符型,它支持原生的修飾符以及XRegExp中的擴(kuò)展修飾符
返回值為被擴(kuò)展的正則對象。
- var date = XRegExp('(?<year> [0-9]{4} ) -? # year /n/
- (?<month> [0-9]{2} ) -? # month /n/
- (?<day> [0-9]{2} ) # day ', 'x'); var match = XRegExp.exec('2015-02-22', date); console.log(match.year); // 輸出:2015
- forEach
- var evens = [];
- XRegExp.forEach('1a2345', //d/, function (match, i) { if (i % 2) evens.push(+match[0]);
- }); console.log(evens); // 輸出:[2, 4]
- matchChain
- var result1 = XRegExp.matchChain('1 <b>2</b> 3 <b>4 a 56</b>', [
- XRegExp('(?is)<b>.*?</b>'), //d+/
- ]); console.log(result1); // 輸出:["2", "4", "56"]
- var html = '<a href="https://xregexp.com/">XRegExp</a>' + '<a href="https://www.google.com/">Google</a>'; var result2 = XRegExp.matchChain(html, [
- { regex: /<a href="([^"]+)">/i, backref: 1 },
- { regex: XRegExp('(?i)^https?://(?<domain>[^/?#]+)'), backref: 'domain' }
- ]); console.log(result2); // 輸出:["xregexp.com", "www.google.com"]
- union
- var result3 = XRegExp.union(['a+b*c', /(dog)/1/, /(cat)/1/], 'i'); console.log(result3); // 輸出:/a/+b/*c|(dog)/1|(cat)/2/i
- exec
- var pos = 3; var result4 = []; while (match = XRegExp.exec('<1><2><3><4>5<6>', /<(/d+)>/, pos, 'sticky')) {
- result4.push(match[1]);
- pos = match.index + match[0].length;
- } console.log(result4); // 輸出:['2', '3', '4']
- replace
- var result5 = XRegExp.replace('2015-02-22', date, '${month}/${day}/${year}'); console.log(result5);
- var result6 = XRegExp.replace('2015-02-22', date, function (match) { return match.month + '/' + match.day + '/' + match.year;
- }); console.log(result6);
新聞熱點(diǎn)
疑難解答