成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Javascript正則表達(dá)式難點(diǎn)、重點(diǎn)

cheukyin / 2283人閱讀

摘要:接下來再看可以看到結(jié)果變成了,這是因?yàn)楸磉_(dá)式匹配的內(nèi)容可以用來表示忽略分組非捕獲分組再來一個(gè)例子再來個(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),如果想要提取具體的年月日,可以這么寫:

console.log("2016-10-15".match(/d{4}[/-.]d{2}[/-.]d{2}/))
// ==> ["2016-10-15"]

上面是沒有添加分組時(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)被提取出來了。接下來再看:

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,...來表示
忽略分組(非捕獲分組)

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

再來一個(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

再來個(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è)位置!)

即(?=p)和(?!p)。其中p是一個(gè)子正則表達(dá)式。關(guān)于錨字符匹配的問題,在ES5中總共有6個(gè)。

^ $  B (?=p) (?!p)

(?=3)表示啥意思呢?表示3前面的位置,見例子:

console.log("a1b2c3d4".replace(/(?=3)/g,"x"));
// ==> a1b2cx3d4
console.log("a1b2c3d4".replace(/(?=d)/g,"x"));
// ==> ax1bx2cx3dx4

那么(?!...)的概念也好理解了,表示取非的,見例子:

console.log("a1b2c3d4".replace(/(?!3)/g,"x"));
// ==> xax1xbx2xc3xdx4x
console.log("a1b2c3d4".replace(/(?!d)/g,"x"));
// ==> xa1xb2xc3xd4x

注意(?!d)表示的意思不是“非數(shù)字前面的位置”,而是所有位置中扣掉數(shù)字前面位置。
再來看一個(gè)例子:
假如”a1b2c3d4“這個(gè)字符串,我要匹配b或c前面的數(shù)字,怎么做呢?

console.log("a1b2c3d4".replace(/d(?=[bc])/g,"x"));
// ==> axbxc3d4
console.log("a1b2c3d4".match(/d(?=[bc])/g));
// ==> ["1", "2"]

再來看一個(gè):假如有這樣一個(gè)字符串"a1a2a3a4a5",我要匹配所有的a但不包括3前面的a,怎么做呢?見下面:

console.log("a1a2a3a4a5".replace(/a(?!3)/g,"x"));
// ==> x1x2a3x4x5

最后:來個(gè)小例子結(jié)束本篇文章:(利用正則來獲取dom的class)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/89645.html

相關(guān)文章

  • JavasScript重難點(diǎn)知識(shí)

    摘要:忍者級(jí)別的函數(shù)操作對(duì)于什么是匿名函數(shù),這里就不做過多介紹了。我們需要知道的是,對(duì)于而言,匿名函數(shù)是一個(gè)很重要且具有邏輯性的特性。通常,匿名函數(shù)的使用情況是創(chuàng)建一個(gè)供以后使用的函數(shù)。 JS 中的遞歸 遞歸, 遞歸基礎(chǔ), 斐波那契數(shù)列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果...

    forsigner 評(píng)論0 收藏0
  • 前端文檔收集

    摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...

    jsbintask 評(píng)論0 收藏0
  • 前端文檔收集

    摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...

    muddyway 評(píng)論0 收藏0
  • JS筆記

    摘要:從最開始的到封裝后的都在試圖解決異步編程過程中的問題。為了讓編程更美好,我們就需要引入來降低異步編程的復(fù)雜性。異步編程入門的全稱是前端經(jīng)典面試題從輸入到頁面加載發(fā)生了什么這是一篇開發(fā)的科普類文章,涉及到優(yōu)化等多個(gè)方面。 TypeScript 入門教程 從 JavaScript 程序員的角度總結(jié)思考,循序漸進(jìn)的理解 TypeScript。 網(wǎng)絡(luò)基礎(chǔ)知識(shí)之 HTTP 協(xié)議 詳細(xì)介紹 HTT...

    rottengeek 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<