国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Javascript正則表達式難點、重點

cheukyin / 2230人閱讀

摘要:接下來再看可以看到結果變成了,這是因為表達式匹配的內容可以用來表示忽略分組非捕獲分組再來一個例子再來個時間轉化的例子向前查找此東西是個位置即和。其中是一個子正則表達式。

重復的貪婪性
 {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}優先匹配2次(貪婪),還可以匹配1次,可以看到上面的結果為["12", "3", "45", "6", "78", "9"];
非貪婪,在量詞后面加一個?即可;

console.log("@123@456@789".match(/d{1,2}?/g))
// ==> ["1", "2", "3", "4", "5", "6", "7", "8", "9"]

表示匹配到1次了就不再匹配了(非貪婪)。

分組

假設有這樣不同格式的日期(2016-10-15、2016/10/15、2016.10.15),如果想要提取具體的年月日,可以這么寫:

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

上面是沒有添加分組時候的,此時,可以給它添加分組:

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

可以看到輸出的結果是一個array,里面的年月日就已經被提取出來了。接下來再看:

console.log("2015-10-15".replace(/(d{4})[/-.](d{2})[/-.](d{2})/g,"$3-$2-$1"))
// ==> "15-10-2016"

可以看到結果變成了:15-10-2016,這是因為表達式匹配的內容可以用$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

再來一個例子:

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

再來個時間轉化的例子:

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"
向前查找 (此東西是個位置!)

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

^ $  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)表示的意思不是“非數字前面的位置”,而是所有位置中扣掉數字前面位置。
再來看一個例子:
假如”a1b2c3d4“這個字符串,我要匹配b或c前面的數字,怎么做呢?

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

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

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89645.html

相關文章

  • JavasScript重難點知識

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

    forsigner 評論0 收藏0
  • 前端文檔收集

    摘要:系列種優化頁面加載速度的方法隨筆分類中個最重要的技術點常用整理網頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數組函數數據訪問性能優化方案實現的大排序算法一怪對象常用方法函數收集數組的操作面向對象和原型繼承中關鍵詞的優雅解釋淺談系列 H5系列 10種優化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術點 常用meta整理 網頁性能管理詳解 HTML5 ...

    jsbintask 評論0 收藏0
  • 前端文檔收集

    摘要:系列種優化頁面加載速度的方法隨筆分類中個最重要的技術點常用整理網頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數組函數數據訪問性能優化方案實現的大排序算法一怪對象常用方法函數收集數組的操作面向對象和原型繼承中關鍵詞的優雅解釋淺談系列 H5系列 10種優化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術點 常用meta整理 網頁性能管理詳解 HTML5 ...

    muddyway 評論0 收藏0
  • JS筆記

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

    rottengeek 評論0 收藏0

發表評論

0條評論

cheukyin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<