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

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript || 正則表達(dá)式

edgardeng / 2071人閱讀

摘要:方法的參數(shù)正則表達(dá)式是變量,必須使用方式創(chuàng)建方法的第二個(gè)參數(shù)可以是回調(diào)函數(shù),其參數(shù)是每次匹配成功獲取的字符串。

1 為什么要用正則表達(dá)式?

學(xué)習(xí)之前,多想想為什么要使用正則表達(dá)式,有助于理解。

正則表達(dá)式regular expression使用單個(gè)字符串來(lái)描述某個(gè)句法規(guī)則,計(jì)算機(jī)根據(jù)規(guī)則去匹配字符串中的內(nèi)容。

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

正則表達(dá)式僅用于字符串的操作

2 常規(guī)字符串操作與正則表達(dá)式的比較

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

傳統(tǒng)字符串操作:需要遍歷整個(gè)字符串,判斷每個(gè)字符是否在"0"-"9"之間再進(jìn)行相應(yīng)的操作

/**
 * 使用一個(gè)暫時(shí)變量tmp保存連續(xù)為數(shù)值時(shí)的字符串,間斷后再統(tǒng)一加入數(shù)組內(nèi);
 * 可能會(huì)出現(xiàn)最后一位是數(shù)字的情況,所以使用i<=str.length多走一次循環(huán)的else路徑,將最后一組數(shù)組加入數(shù)組
 * 
 */
function findNum_two(str) {
    var arr = [];
    var tmp = "";
    // 遍歷字符串,取出需要的數(shù)字
    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" ]

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

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

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

3 正則表達(dá)式寫(xiě)法

字面量寫(xiě)法:var re = /d+/gi;

構(gòu)造函數(shù)寫(xiě)法:var re = new RegExp("d+", "gi");注意兩個(gè),因?yàn)镴avaScript中需要轉(zhuǎn)義

3.1 正則表達(dá)式中的轉(zhuǎn)義字符

轉(zhuǎn)義字符:多帶帶使用字母本身有意義;在前面加上后改變?cè)幸饬x

3.2 量詞

用來(lái)描述相鄰的前面的單個(gè)字符匹配規(guī)則出現(xiàn)的次數(shù)

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

3.3 字符類(lèi)

使用[]描述一類(lèi)字符,整體只代表一個(gè)字符,表示該字符在某個(gè)范圍內(nèi)。

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

[]多種規(guī)則是或 |的關(guān)系:[0-9a-zA-Z]

整個(gè)字符類(lèi)[0-9a-zA-Z]只代表一位字符

注意,字符類(lèi)中的^表示非的意思,不在某個(gè)范圍內(nèi)[^d]表示非數(shù)字的字符

3.4 修飾符

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

i--ignored:忽略大小寫(xiě)

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

u:將模式視為Unicode序列點(diǎn)的序列

3.5 匹配子項(xiàng)

對(duì)于復(fù)雜的正則表達(dá)式,可以使用()將其拆分為多個(gè)部分,replace(re, fn)回調(diào)函數(shù)中可以簡(jiǎn)化匹配內(nèi)容的操作

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

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

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

$1代表正則表達(dá)式的第一個(gè)匹配子項(xiàng):(d+)

$2代表正則表達(dá)式第二個(gè)匹配子項(xiàng):(w)

...

3.6 重復(fù)子項(xiàng)

主要用于匹配字符串中重復(fù)的字符

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

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

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

...

3.7 邏輯或|

使用|代表邏輯或,|左右兩個(gè)操作數(shù)只要有一個(gè)滿(mǎn)足要求即可

3.8 開(kāi)始、結(jié)束標(biāo)記

不在[]中使用^,^表示以最近的匹配字符規(guī)則開(kāi)始整個(gè)匹配;

$表示以最近的匹配規(guī)則結(jié)束匹配

作用范圍只是^之后的第一個(gè)子項(xiàng);$前的第一個(gè)子項(xiàng)

4 正則表達(dá)式的方法

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

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

test()、exec()是正則表達(dá)式對(duì)象的操作方法

4.1 test()

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

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

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

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

str.search(re)

4.3 match()

根據(jù)RegExp去匹配字符串,如果匹配成功,將匹配的結(jié)果保存在數(shù)組中返回;匹配失敗返回null。默認(rèn)第一次匹配后便停止繼續(xù)匹配,使用修飾符g進(jìn)行全局匹配

str.match(re)

4.4 replace(re, newstr)方法

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

replace()方法的參數(shù)re正則表達(dá)式是變量,必須使用new RegExp()方式創(chuàng)建re

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

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

replace()方法的第二個(gè)參數(shù)可以是回調(diào)函數(shù),其參數(shù)是每次匹配成功獲取的字符串。每次匹配成功都會(huì)執(zhí)行一次回調(diào)函數(shù)

5 實(shí)踐 5.1 找到一個(gè)字符串中出現(xiàn)次數(shù)最多的字符及其出現(xiàn)的次數(shù)
var str = "1231asdaegj71836178asdhasssasalsdhdzxbczaslazxcnnffajshdhgagsgdssssasdzzxda";

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

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

var length = 0;
var val = "";   // 保存出現(xiàn)次數(shù)最多的字符

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

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

5.3 常用正則匹配規(guī)則

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

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

emailvar re = /w+@[a-z0-9]+(.[a-z]+){1,3}/;:可能出現(xiàn).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 將常用正則表達(dá)式封裝在一個(gè)對(duì)象中便于使用
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+$/
}

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

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

相關(guān)文章

  • 正則達(dá)式

    摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書(shū)問(wèn)世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫(xiě),作用是對(duì)字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語(yǔ)言里和所有的計(jì)算機(jī)平臺(tái)上使用的文字處理工具。它可以用來(lái)查找特定的信息(搜索),也可以用來(lái)查...

    bang590 評(píng)論0 收藏0
  • JavaScript正則達(dá)式的匹配模式

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

    wqj97 評(píng)論0 收藏0
  • JS正則達(dá)式入門(mén),看這篇就夠了

    摘要:如果遇到非常的復(fù)雜的匹配,正則表達(dá)式的優(yōu)勢(shì)就更加明顯了。關(guān)于正則表達(dá)式書(shū)寫(xiě)規(guī)則,可查看,上面說(shuō)的很清楚了,我就不貼出來(lái)了。替換與正則表達(dá)式匹配的子串,并返回替換后的字符串。結(jié)語(yǔ)正則表達(dá)式并不難,懂了其中的套路之后,一切都變得簡(jiǎn)單了。 前言 在正文開(kāi)始前,先說(shuō)說(shuō)正則表達(dá)式是什么,為什么要用正則表達(dá)式?正則表達(dá)式在我個(gè)人看來(lái)就是一個(gè)瀏覽器可以識(shí)別的規(guī)則,有了這個(gè)規(guī)則,瀏覽器就可以幫我們判斷...

    wenzi 評(píng)論0 收藏0
  • JavaScript 中的正則達(dá)式

    摘要:正則表達(dá)式的意義中的正則表達(dá)式使用表示,可以使用構(gòu)造函數(shù)來(lái)創(chuàng)建對(duì)象,不過(guò)對(duì)象更多的是通過(guò)一種特殊的直接量語(yǔ)法來(lái)創(chuàng)建。用構(gòu)造函數(shù)也可以定義一個(gè)與之等價(jià)的正則表達(dá)式,代碼如下正則表達(dá)式的模式規(guī)則是由一個(gè)字符序列組成的。 正則表達(dá)式的模式匹配 正則表達(dá)式(regular expression)是一個(gè)描述字符模式的對(duì)象。javascript的RegExp對(duì)象表示正則表達(dá)式,String和Reg...

    _Dreams 評(píng)論0 收藏0
  • JavaScript中的正則達(dá)式

    Javascript的正則表達(dá)式是前端中比較重要的部分,正則表達(dá)式主要用于字符串處理,表單驗(yàn)證等場(chǎng)合,實(shí)用高效,文章主要對(duì)JavaScript中的正則的學(xué)習(xí)與總結(jié) 正則表達(dá)式的定義 正則表達(dá)式:是一個(gè)描述字符模式的對(duì)象,JavaScrip中正則表達(dá)式用RegExp對(duì)象表示,可以使用RegExp構(gòu)造函數(shù)來(lái)創(chuàng)建正則對(duì)象 正則表達(dá)式的創(chuàng)建 1.字面量創(chuàng)建 var reg = /[a-z]/; 2.構(gòu)...

    _Zhao 評(píng)論0 收藏0
  • 簡(jiǎn)單說(shuō) 正則達(dá)式——要注意lastIndex屬性

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

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

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

0條評(píng)論

閱讀需要支付1元查看
<