摘要:接下來(lái)再看可以看到結(jié)果變成了,這是因?yàn)楸磉_(dá)式匹配的內(nèi)容可以用來(lái)表示忽略分組非捕獲分組再來(lái)一個(gè)例子再來(lái)個(gè)時(shí)間轉(zhuǎn)化的例子向前查找此東西是個(gè)位置即和。其中是一個(gè)子正則表達(dá)式。
重復(fù)的貪婪性
{n,m} {n,} {n} ? + *
?表示匹配0次或1次,(最多匹配1次);
+表示匹配1次或多次,(最少匹配1次);
*表示匹配0次或多次,(匹配任意次);
{m,n}表示匹配m到n次,(最少m次,最多n次);
舉例:
console.log("@123@456@789".match(/d{1,2}/g)) // ==> ["12", "3", "45", "6", "78", "9"]
{1,2}優(yōu)先匹配2次(貪婪),還可以匹配1次,可以看到上面的結(jié)果為["12", "3", "45", "6", "78", "9"];
非貪婪,在量詞后面加一個(gè)?即可;
console.log("@123@456@789".match(/d{1,2}?/g)) // ==> ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
表示匹配到1次了就不再匹配了(非貪婪)。
分組假設(shè)有這樣不同格式的日期(2016-10-15、2016/10/15、2016.10.15),如果想要提取具體的年月日,可以這么寫(xiě):
console.log("2016-10-15".match(/d{4}[/-.]d{2}[/-.]d{2}/)) // ==> ["2016-10-15"]
上面是沒(méi)有添加分組時(shí)候的,此時(shí),可以給它添加分組:
console.log("2015-10-15".match(/(d{4})[/-.](d{2})[/-.](d{2})/)) // ==> ["2016-10-15", "2016", "10", "15"]
可以看到輸出的結(jié)果是一個(gè)array,里面的年月日就已經(jīng)被提取出來(lái)了。接下來(lái)再看:
console.log("2015-10-15".replace(/(d{4})[/-.](d{2})[/-.](d{2})/g,"$3-$2-$1")) // ==> "15-10-2016"
可以看到結(jié)果變成了:15-10-2016,這是因?yàn)楸磉_(dá)式匹配的內(nèi)容可以用$1,$2,...來(lái)表示
忽略分組(非捕獲分組)
var reg = /(?:d{4})(-|.|/)d{2}1d{2}/; console.log(reg.test("2016-10-15")); // ==>true console.log(reg.test("2016.10.15")); // ==>true console.log(reg.test("2016/10/15")); // ==>true console.log(reg.test("2016-10/15")); // ==>false
再來(lái)一個(gè)例子:
console.log("1-2-3-4".replace(/(d)/g,"x")); // ==> x-x-x-x console.log("1-2-3-4".replace(/(-d)/g,"x")); // ==> 1xxx console.log("1-2-3-4".replace(/-(d)/g,"x")); // ==> 1xxx console.log("1-2-3-4".replace(/(-d)/g,"0$1")); // ==> 10-20-30-4 console.log("1-2-3-4".replace(/-(d)/g,"0$1")); // ==> 1020304 console.log("1-2-3-4".match(/(-d)/g)); // ==> ["-2", "-3", "-4"] console.log("1-2-3-4".match(/-(d)/g)); // ==> ["-2", "-3", "-4"] console.log(RegExp.$1); // ==> 4
再來(lái)個(gè)時(shí)間轉(zhuǎn)化的例子:
var date="2014-12-30 12:30:20"; console.log(date.replace(/(d{4})-(d{2})-(d{2})/g,"$2-$3-$1")); // ==> "12-30-2014 12:30:20" console.log(date.replace(/(d{4})-(d{2})-(d{2})s[w+:]{8}/g,"$2-$3-$1")) // ==> "12-30-2014"向前查找 (此東西是個(gè)位置?。?/b>
即(?=p)和(?!p)。其中p是一個(gè)子正則表達(dá)式。關(guān)于錨字符匹配的問(wèn)題,在ES5中總共有6個(gè)。
^ $ B (?=p) (?!p)
(?=3)表示啥意思呢?表示3前面的位置,見(jiàn)例子:
console.log("a1b2c3d4".replace(/(?=3)/g,"x")); // ==> a1b2cx3d4 console.log("a1b2c3d4".replace(/(?=d)/g,"x")); // ==> ax1bx2cx3dx4
那么(?!...)的概念也好理解了,表示取非的,見(jiàn)例子:
console.log("a1b2c3d4".replace(/(?!3)/g,"x")); // ==> xax1xbx2xc3xdx4x console.log("a1b2c3d4".replace(/(?!d)/g,"x")); // ==> xa1xb2xc3xd4x
注意(?!d)表示的意思不是“非數(shù)字前面的位置”,而是所有位置中扣掉數(shù)字前面位置。
再來(lái)看一個(gè)例子:
假如”a1b2c3d4“這個(gè)字符串,我要匹配b或c前面的數(shù)字,怎么做呢?
console.log("a1b2c3d4".replace(/d(?=[bc])/g,"x")); // ==> axbxc3d4 console.log("a1b2c3d4".match(/d(?=[bc])/g)); // ==> ["1", "2"]
再來(lái)看一個(gè):假如有這樣一個(gè)字符串"a1a2a3a4a5",我要匹配所有的a但不包括3前面的a,怎么做呢?見(jiàn)下面:
console.log("a1a2a3a4a5".replace(/a(?!3)/g,"x")); // ==> x1x2a3x4x5
最后:來(lái)個(gè)小例子結(jié)束本篇文章:(利用正則來(lái)獲取dom的class)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89645.html
摘要:忍者級(jí)別的函數(shù)操作對(duì)于什么是匿名函數(shù),這里就不做過(guò)多介紹了。我們需要知道的是,對(duì)于而言,匿名函數(shù)是一個(gè)很重要且具有邏輯性的特性。通常,匿名函數(shù)的使用情況是創(chuàng)建一個(gè)供以后使用的函數(shù)。 JS 中的遞歸 遞歸, 遞歸基礎(chǔ), 斐波那契數(shù)列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果...
摘要:系列種優(yōu)化頁(yè)面加載速度的方法隨筆分類(lèi)中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁(yè)性能管理詳解離線(xiàn)緩存簡(jiǎn)介系列編寫(xiě)高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪(fǎng)問(wèn)性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁(yè)面加載速度的方法 隨筆分類(lèi) - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁(yè)性能管理詳解 HTML5 ...
摘要:系列種優(yōu)化頁(yè)面加載速度的方法隨筆分類(lèi)中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁(yè)性能管理詳解離線(xiàn)緩存簡(jiǎn)介系列編寫(xiě)高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪(fǎng)問(wèn)性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁(yè)面加載速度的方法 隨筆分類(lèi) - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁(yè)性能管理詳解 HTML5 ...
摘要:從最開(kāi)始的到封裝后的都在試圖解決異步編程過(guò)程中的問(wèn)題。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。異步編程入門(mén)的全稱(chēng)是前端經(jīng)典面試題從輸入到頁(yè)面加載發(fā)生了什么這是一篇開(kāi)發(fā)的科普類(lèi)文章,涉及到優(yōu)化等多個(gè)方面。 TypeScript 入門(mén)教程 從 JavaScript 程序員的角度總結(jié)思考,循序漸進(jìn)的理解 TypeScript。 網(wǎng)絡(luò)基礎(chǔ)知識(shí)之 HTTP 協(xié)議 詳細(xì)介紹 HTT...
閱讀 886·2023-04-25 21:21
閱讀 3254·2021-11-24 09:39
閱讀 3102·2021-09-02 15:41
閱讀 2039·2021-08-26 14:13
閱讀 1856·2019-08-30 11:18
閱讀 2822·2019-08-29 16:25
閱讀 535·2019-08-28 18:27
閱讀 1614·2019-08-28 18:17