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

資訊專欄INFORMATION COLUMN

JavaScript || 正則表達式

edgardeng / 2028人閱讀

摘要:方法的參數正則表達式是變量,必須使用方式創建方法的第二個參數可以是回調函數,其參數是每次匹配成功獲取的字符串。

1 為什么要用正則表達式?

學習之前,多想想為什么要使用正則表達式,有助于理解。

正則表達式regular expression使用單個字符串來描述某個句法規則,計算機根據規則去匹配字符串中的內容。

正則表達式的性能高于常規字符串操作(省略循環、遍歷等操作)

正則表達式僅用于字符串的操作

2 常規字符串操作與正則表達式的比較

要提取出字符串中"ashx521dasbx34sasdz275dasdzxd897"中連續的數字,并將結果保存在數組中["521", "34", "275", "897"]

傳統字符串操作:需要遍歷整個字符串,判斷每個字符是否在"0"-"9"之間再進行相應的操作

/**
 * 使用一個暫時變量tmp保存連續為數值時的字符串,間斷后再統一加入數組內;
 * 可能會出現最后一位是數字的情況,所以使用i<=str.length多走一次循環的else路徑,將最后一組數組加入數組
 * 
 */
function findNum_two(str) {
    var arr = [];
    var tmp = "";
    // 遍歷字符串,取出需要的數字
    for(var i=0; i<=str.length; i++) {   
        if(str.charAt(i) <= "9" && str.charAt(i) >= "0") {
            tmp += str[i];
        } else {
            if(tmp) {   // 如果tmp不為空
                arr.push(tmp);
                tmp = "";
            }
        }
    }

    return arr;
}
console.log(findNum_two(str));    //  [ "521", "34", "275", "897" ]

使用正則表達式:只需使用字符串的match()方法去匹配指定的規則(正則表達式即可)

function findNum (str) {
    return str.match(/d+/g);
}

console.log(findNum(str));   // [ "521", "34", "275", "897" ]

3 正則表達式寫法

字面量寫法:var re = /d+/gi;

構造函數寫法:var re = new RegExp("d+", "gi");注意兩個,因為JavaScript中需要轉義

3.1 正則表達式中的轉義字符

轉義字符:多帶帶使用字母本身有意義;在前面加上后改變原有意義

3.2 量詞

用來描述相鄰的前面的單個字符匹配規則出現的次數

量詞使用{a, b}表示,其中b可以省略,意義不同

3.3 字符類

使用[]描述一類字符,整體只代表一個字符,表示該字符在某個范圍內。

/a[0-9]c/匹配三位字符串,第一位是a,第三位是c,第二位是"0"-"9"之間的任何一位都可以匹配成功

[]多種規則是或 |的關系:[0-9a-zA-Z]

整個字符類[0-9a-zA-Z]只代表一位字符

注意,字符類中的^表示非的意思,不在某個范圍內[^d]表示非數字的字符

3.4 修飾符

g--global:全局匹配,找到所有的匹配項,不是在第一個匹配后停止

i--ignored:忽略大小寫

m:多行,將開始字符^和結束字符$視為在多行上工作(每匹配一行的開始和結束以 分割)

u:將模式視為Unicode序列點的序列

3.5 匹配子項

對于復雜的正則表達式,可以使用()將其拆分為多個部分,replace(re, fn)回調函數中可以簡化匹配內容的操作

var re = /(d+)(w)(S)/;

fn($0, $1, $2 ...)

$0代表正則表達式本身匹配到的內容:(d+)(w)(S)

$1代表正則表達式的第一個匹配子項:(d+)

$2代表正則表達式第二個匹配子項:(w)

...

3.6 重復子項

主要用于匹配字符串中重復的字符

var re = /(a)(b)(c)1/;1表示重復的第一個子項(b),第4個位置的字符與第1個位置的字符相同

var re = /(a)(b)(c)2/;2表示重復的第二個子項(b),第4個位置的字符與第2個位置的字符相同

var re = /(a)(b)(c)3/;3表示重復的第三個子項(c),第4個位置的字符與第3個位置的字符相同

...

3.7 邏輯或|

使用|代表邏輯或,|左右兩個操作數只要有一個滿足要求即可

3.8 開始、結束標記

不在[]中使用^^表示以最近的匹配字符規則開始整個匹配;

$表示以最近的匹配規則結束匹配

作用范圍只是^之后的第一個子項;$前的第一個子項

4 正則表達式的方法

主要有4中方法用于操作正則表達式:

match()replace()search()是字符串的操作方法

test()exec()是正則表達式對象的操作方法

4.1 test()

根據RegExp去匹配字符串,如果匹配成功,返回true;匹配失敗返回false主要用于邏輯判斷

var str = "abxe2312dafxz";
var re = /d+/;

re.test(str);   // true
4.2 search()

根據RegExp去匹配字符串,返回第一個匹配成功字符串的首字符的索引;匹配失敗返回-1用于查找字符的索引,類似字符串的indexOf()方法

str.search(re)

4.3 match()

根據RegExp去匹配字符串,如果匹配成功,將匹配的結果保存在數組中返回;匹配失敗返回null默認第一次匹配后便停止繼續匹配,使用修飾符g進行全局匹配

str.match(re)

4.4 replace(re, newstr)方法

根據RegExp去匹配字符串,如果匹配成功,將匹配的字符串更換為新的字符串newstr

replace()方法的參數re正則表達式是變量,必須使用new RegExp()方式創建re

var str = "a23gb";
var re = /d+/;

str.replace(re, "xy");   //  "axygb"

replace()方法的第二個參數可以是回調函數,其參數是每次匹配成功獲取的字符串。每次匹配成功都會執行一次回調函數

5 實踐 5.1 找到一個字符串中出現次數最多的字符及其出現的次數
var str = "1231asdaegj71836178asdhasssasalsdhdzxbczaslazxcnnffajshdhgagsgdssssasdzzxda";

var str = str.split("").sort().join("");   // 按順序的字符序列

var re = /(w)1+/g;

var length = 0;
var val = "";   // 保存出現次數最多的字符

// $0代表每次匹配到的字符,$1代表第一個正則表達式子項(w)
str.replace(re, function ($0, $1) {  // 可以將匹配的字符當做變量操作
    if($0.length > length) {
        length = $0.length;
        val = $1;    // $1代表每次匹配的字符
    }
});
console.log(length);
console.log(val);
5.2 去掉字符串前后的空格

var re = /^s+|s+$/g;,使用字符串應用正則即可:str.replace(re, "")

5.3 常用正則匹配規則

QQ號:var re = /^[1-9]d{4,11}$/; :第一位是1-9中的數字,最后也是數字,總共5-12位

中文匹配:var re = /[u4e00-u9fa5]/;:使用Unicode編碼進行匹配

emailvar re = /w+@[a-z0-9]+(.[a-z]+){1,3}/;:可能出現.com.cn.net

身份證:var re = /[1-9]d{14}|[1-9]d{17}|[1-9]d{16}x/i;

郵編:var re = /[1-9]d{5}/;

5.3 將常用正則表達式封裝在一個對象中便于使用
var re = {
    email: /w+@[a-z0-9]+(.[a-z]+){1,3}/,
    chinese: /[u4e00-u9fa5]/,
    qq: /^[1-9]d{4,11}$/,
    id: /[1-9]d{14}|[1-9]d{17}|[1-9]d{16}x/i,
    trim: /^s+|s+$/
}

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

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

相關文章

  • 正則達式

    摘要:本文內容共正則表達式火拼系列正則表達式回溯法原理學習正則表達式,是需要懂點兒匹配原理的。正則表達式迷你書問世了讓幫你生成和解析參數字符串最全正則表達式總結驗證號手機號中文郵編身份證地址等是正則表達式的縮寫,作用是對字符串執行模式匹配。 JS 的正則表達式 正則表達式 一種幾乎可以在所有的程序設計語言里和所有的計算機平臺上使用的文字處理工具。它可以用來查找特定的信息(搜索),也可以用來查...

    bang590 評論0 收藏0
  • JavaScript正則達式的匹配模式

    摘要:選擇分組和引用正則表達式的語法還包括指定選擇項子表達式分組和引用前一子表達式的特殊字符。帶圓括號的表達式的另一個用途是允許在同一正則表達式的后部引用前面的子表達式。 正則表達式(regular expression)是一個描述字符模式的對象。JavaScript的 RegExp類 表示正則表達式,String和RegExp都定義了方法,后者使用正則表達式進 行強大的模式匹配和文本檢索與...

    wqj97 評論0 收藏0
  • JS正則達式入門,看這篇就夠了

    摘要:如果遇到非常的復雜的匹配,正則表達式的優勢就更加明顯了。關于正則表達式書寫規則,可查看,上面說的很清楚了,我就不貼出來了。替換與正則表達式匹配的子串,并返回替換后的字符串。結語正則表達式并不難,懂了其中的套路之后,一切都變得簡單了。 前言 在正文開始前,先說說正則表達式是什么,為什么要用正則表達式?正則表達式在我個人看來就是一個瀏覽器可以識別的規則,有了這個規則,瀏覽器就可以幫我們判斷...

    wenzi 評論0 收藏0
  • JavaScript 中的正則達式

    摘要:正則表達式的意義中的正則表達式使用表示,可以使用構造函數來創建對象,不過對象更多的是通過一種特殊的直接量語法來創建。用構造函數也可以定義一個與之等價的正則表達式,代碼如下正則表達式的模式規則是由一個字符序列組成的。 正則表達式的模式匹配 正則表達式(regular expression)是一個描述字符模式的對象。javascript的RegExp對象表示正則表達式,String和Reg...

    _Dreams 評論0 收藏0
  • JavaScript中的正則達式

    Javascript的正則表達式是前端中比較重要的部分,正則表達式主要用于字符串處理,表單驗證等場合,實用高效,文章主要對JavaScript中的正則的學習與總結 正則表達式的定義 正則表達式:是一個描述字符模式的對象,JavaScrip中正則表達式用RegExp對象表示,可以使用RegExp構造函數來創建正則對象 正則表達式的創建 1.字面量創建 var reg = /[a-z]/; 2.構...

    _Zhao 評論0 收藏0
  • 簡單說 正則達式——要注意lastIndex屬性

    摘要:返回是一個只讀的布爾值,看這個正則表達式是否帶有修飾符。方法,它的參數是一個字符串,用對某個字符串進行檢測,如果包含正則表達式的一個匹配結果,則返回,否則返回。總結這次主要是說說,中正則表達式對象的個屬性,而最需要注意的就是屬性了。 說明 這篇文章,主要和大家聊聊JavaScript中RegExp對象的屬性。 解釋 每個RegExp對象都包含5個屬性,source、global、ign...

    jokester 評論0 收藏0

發表評論

0條評論

edgardeng

|高級講師

TA的文章

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