站長資訊網
        最全最豐富的資訊網站

        正則的幾個基本概念

        經常看到說正則的文章,但說的只是方法,卻很少有說以下幾個基本概念:

        1.貪婪:+,*,?,{m,n}等默認是貪婪匹配,即盡可能多匹配,也叫最大匹配
        如果后面加上?,就轉化為非貪婪匹配,需要高版本支持

        2.獲取:默認用(x|y)是獲取匹配,很多時候只是測試,不一定要求得到所匹配的數據,尤其在嵌套匹配或大數據中就要用非獲取匹配(?:x|y),這樣提高了效率,優化了程序。

        3.消耗:默認是消耗匹配,一般在預查中是非消耗匹配。
        舉個例子,2003-2-8要變為2003-02-08
        如果用/-(d)-/第二次匹配將從8開始,從而只替換第一個2,錯誤
        如果用/-(d)(?=-)/則第二次匹配從第二個-開始,即不消耗字符-

        4.預查:js中分為正向預查和負向預查
        如上面的(?=pattern)是正向預查,在任何匹配 pattern 的字符串開始處匹配查找字符串。還有(?!pattern)是負向預查,在任何不匹配 pattern 的字符串開始處匹配查找字符串。負向預查有時會用在對[^]的擴充,[^]只是一些字符,而?!可以使整個字符串。

        5.回調:一般用在替換上,即根據不用的匹配內容返回不用的替換值,從而簡化了程序,需要高版本支持

        6.引用:num 對所獲取的第num個匹配的引用。
        例如,'(.)11′ 匹配AAA型。'(.)(.)21′ 匹配ABBA型。


        [Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]

        當然還有很多,這些都只是基本的需要掌握的

        遇到正則問題,一般可用以下兩種方法解決:

        1.分類,即根據所有的可能列出各種情況,如2003以內的數
        0 0
        1-999 [1-9]d{0,2}
        1000-1999 1d{3}
        2000-2003 200[0-3]

        所以最后的匹配就是 (0|[1-9]d{0,2}|1d{3}|200[0-3])

        2.分組,即將整句分為不同的最小單元,如’、%、_成雙出現
        能成組的,即允許存在的,有

        %% 如果是大于2的偶數個可細分為多個更小的2字符單元
        __
        [^’%_] 非以上字符

        所以最后的匹配就是 ^(”|%%|__|[^’%_])*$

        ——————————————————————————–

        replace + function 5.5+支持


        [Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 日韩精品欧美国产在线| 亚洲精品国偷自产在线| 亚洲AV永久无码精品一区二区| 国产精品合集一区二区三区 | 91久久精品无码一区二区毛片| 亚洲精品乱码久久久久久中文字幕 | 国产精品99爱免费视频| 成人精品视频99在线观看免费| 午夜精品久久影院蜜桃| 精品国产成人在线| 99久久99久久精品国产| 国产乱码精品一区二区三区四川人| 人妻精品久久久久中文字幕一冢本| 四虎影院国产精品| 精品国产综合区久久久久久| 99re只有精品8中文| 国内精品91最新在线观看| 国产探花在线精品一区二区| 日韩av无码久久精品免费| 四虎精品成人免费视频| 免费人欧美日韩在线精品| 久久国产美女免费观看精品| 国产精品香蕉在线观看| 国产精品制服丝袜亚洲欧美| 四虎4hu永久免费国产精品| 欧洲精品视频在线观看| 久久国产精品99久久久久久老狼| 国产精品欧美一区二区三区不卡 | 国产精品久久久久AV福利动漫| 亚洲AV永久无码精品成人| 四虎影视永久在线精品免费| 色偷偷88欧美精品久久久| 亚洲精品tv久久久久| 亚洲精品亚洲人成在线观看下载| 亚洲国产精品无码久久久久久曰 | 国产L精品国产亚洲区久久| 国产成人精品cao在线| 国产精品午夜福利在线无码| 精品国产香蕉伊思人在线在线亚洲一区二区| 国产精品亚洲专区无码WEB| 国产精品成人免费观看 |