国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JS中的正則表達(dá)式

這篇具有很好參考價(jià)值的文章主要介紹了JS中的正則表達(dá)式。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

什么是正則

正則就是一種規(guī)則的的表達(dá)式,書寫一段規(guī)則,用于匹配一段字符串是否符合規(guī)則
創(chuàng)建正則表達(dá)式
創(chuàng)建正則表達(dá)式有兩種方式:
1.字面量的形式
2.內(nèi)置構(gòu)造函數(shù)的形式

<script>
    *1.字面量的形式
    const reg = /abc/

    *2.內(nèi)置構(gòu)造函數(shù)的形式
    const reg1 = new RegExp('abc')

    console.log(reg)  // /abc/
    console.log(reg1)  // /abc/
</script>

正則的常用方法

1.匹配(test)
匹配字符串是否符合正則規(guī)則
符合—>true
不符合—>false
語法: 正則.test(字符串)
2.捕獲
語法:正則.exec(字符串)

正則的元字符

正則的表達(dá)式的符號(hào)由哪些組成?
1.元字符
正則表達(dá)式的規(guī)則符號(hào)
2.修飾符
修飾整個(gè)正則表達(dá)式的符號(hào)

普通元字符

1.\d ------ 表示一位(一個(gè))數(shù)字(0~9)
2. \D ------ 表示 一位 非數(shù)字(除了0~9)
3. \w ------ 表示 數(shù)字(0~9)字母(a-zA-Z)下劃線(_) 其中的 一個(gè)
4. \W ------ 表示 除了 數(shù)字(0~9)字母(a-zA-Z)下劃線 這些的某一個(gè)字符
5. \s ------ 表示 一位 空白字符
6. \S ------ 表示 一位 非空白字符
7. . ------ 表示 一位 非換行的任意字符
8. \ ------ 表示轉(zhuǎn)義符
有意義的符號(hào), 轉(zhuǎn)為沒有意義的文本
沒有意義的文本, 轉(zhuǎn)為有意義的符號(hào)

<script>
        const reg = /\d/    // 表示字符串中 至少包含一個(gè) 數(shù)字(0~9)

        console.log(reg.test('qwertyuiop')) // false
        console.log(reg.test('!@#$%^&*')) // false
        console.log(reg.test('1000')) // true

        const reg1 = /\D/   // 表示字符串中 至少出現(xiàn)一個(gè) 非數(shù)字的內(nèi)容
        console.log(reg1.test('qwertyuiop')) // true
        console.log(reg1.test('!@#$%^&*')) // true
        console.log(reg1.test('1000')) // false

        const reg = /\w/    // 表示字符串中 至少包含一個(gè) 數(shù)字(0~9)字母(a-zA-Z)下劃線(_) 其中的 一個(gè)

        console.log(reg.test('@#$%^&*'))    // false
        console.log(reg.test('@#$%_^&*'))    // true
        console.log(reg.test('y@#$%^&*'))    // true
        console.log(reg.test('6@#$%^&*'))    // true
        console.log(reg.test('abc_123'))    // true

        const reg1 = /\W/   //表示 字符串中 至少出現(xiàn)一個(gè)  數(shù)字(0~9)字母(a-zA-Z)下劃線(_) 以外的 字符
        console.log(reg1.test('@#$%^&*'))    // true
        console.log(reg1.test('@#$%_^&*'))    // true
        console.log(reg1.test('y@#$%^&*'))    // true
        console.log(reg1.test('6@#$%^&*'))    // true
        console.log(reg1.test('abc_123'))    // false

        const reg = /\s/    // 表示字符串中 至少出現(xiàn)一個(gè) 空白字符
        console.log(reg.test('asd'))    // false
        console.log(reg.test('213'))    // false
        console.log(reg.test('#$%'))    // false
        console.log(reg.test('#$ %'))    // true

        const reg1 = /\S/   // 表示字符串 至少出現(xiàn)一個(gè) 非空白字符
        console.log(reg1.test('asd'))    // true
        console.log(reg1.test('213'))    // true
        console.log(reg1.test('#$%'))    // true
        console.log(reg1.test('#$ %'))    // true
        console.log(reg1.test(' '))    // false

        const reg = /./ // 表示字符串 至少出現(xiàn)一個(gè) 非換行的任意字符
        console.log(reg.test('\n')) // false
        console.log(reg.test('123\n')) // true

        const reg1 = /\./   // 表示字符串中至少出現(xiàn)一個(gè) 小數(shù)點(diǎn)
        console.log(reg1.test('100'))   // false
        console.log(reg1.test('1.00'))   // true
</script>

邊界元字符

1.^ ------ 表示開頭
2.$ ------ 表示結(jié)尾

<script>
        const reg1 = /\d/    // 表示字符串至少出現(xiàn)一個(gè)數(shù)字
        console.log(reg1.test('abc123def'))  // true
        
        const reg2 = /^\d/    // 表示字符串開頭是一個(gè)數(shù)字
        console.log(reg2.test('abc123def')) // false
        console.log(reg2.test('123def'))    // true

        const reg3 = /\d$/    // 表示字符串結(jié)尾是一個(gè)數(shù)字
        console.log(reg3.test('abc123def')) // false
        console.log(reg3.test('abc123')) // true

        const reg4 = /^\d$/    // 表示字符串只能是一個(gè)數(shù)字
        console.log(reg4.test('abc123def')) // false
        console.log(reg4.test('123def'))    // false
        console.log(reg4.test('123'))       // false
        console.log(reg4.test('1'))         // true
</script>

正則的限定元字符

表示前邊一個(gè)符號(hào)代表的內(nèi)容出現(xiàn)多少次
1.* ------ 表示0~正無窮次
2. + ------ 表示 1~正無窮次
3. ? ------ 表示 0~1次
4. {n} ------ 表示 限定 n 次, 不能多也不能少
5. {n,} ------ 表示 最少 n 次
6. {n,m} ------ 表示 最少 n 次, 最多 m 次

<script>
        const reg1 = /^\d*$/  // 這個(gè)字符串的數(shù)字只能出現(xiàn) 0~正無窮次
        console.log(reg1.test('1'))   // true
        console.log(reg1.test('1a'))   // false

        const reg2 = /^\d+$/ // 這個(gè)字符串的數(shù)字只能出現(xiàn)1~正無窮
        console.log(reg2.test('100'))    // true
        console.log(reg2.test('qwer'))    // false
        console.log(reg2.test('999qwer'))    // false

        const reg3 = /^\d?$/ // 這個(gè)字符串的數(shù)字只能出現(xiàn) 0~1 次
        console.log(reg3.test('666'))    // false
        console.log(reg3.test('6'))    // true

        const reg4 = /^\d{2}$/   // 這個(gè)字符串的數(shù)字只能出現(xiàn) 2 次
        console.log(reg4.test('666'))    // false
        console.log(reg4.test('66'))    // true
        console.log(reg4.test('6'))    // false

        const reg5 = /^\d{2,}$/   // 這個(gè)字符串的數(shù)字最少出現(xiàn) 2 次
        console.log(reg5.test('666'))    // true
        console.log(reg5.test('66'))    // true
        console.log(reg5.test('6'))    // false

        const reg6 = /^\d{2,3}$/   // 這個(gè)字符串的數(shù)字最少出現(xiàn) 2 次 最多出現(xiàn)3次
        console.log(reg6.test('6666'))    // false
        console.log(reg6.test('666'))    // true
        console.log(reg6.test('66'))    // true
        console.log(reg6.test('6'))    // false
</script>

特殊元字符

1.()
含義1: 當(dāng)成一個(gè)整體
含義2: 單獨(dú)捕獲(欠著)
2. |

字符為 或 左右兩邊的 都行
3. [ ]
包含
注意: [abcd] 包含其中一個(gè)即可 [] 實(shí)際代表的就是 一位字符
4. [^]

注意: [^abcd] 只要不是他們四個(gè)中的一個(gè)即可 [^] 實(shí)際代表的就是 一位字符
5.-
到(至)
通常與 包含 和 非 一起使用
[0-9] 數(shù)字 0~9 中的一個(gè) \d
[^0-9] 不是數(shù)字 0~9 中的 一個(gè) \D
[a-z] 小寫 字母a~z
[A-Z] 大寫 字母A~Z

<script>
        const reg = /(abc){2}/  // 表示 abc 這個(gè)整體 一定出現(xiàn) 2 次
        console.log(reg.test('abcdef')) // false
        console.log(reg.test('abcab')) // false
        console.log(reg.test('abcabc')) // true

        const reg = /(abc|def){2}/  // 這個(gè)字符串需要 abc 或者 def 出現(xiàn)兩次
        console.log(reg.test('abcabc')) // true
        console.log(reg.test('abcdef')) // true
        console.log(reg.test('defabc')) // true
        console.log(reg.test('defdef')) // true

        const reg = /^[a-c]$/   // 這個(gè)字符串只能是 a-c 其中的任意一個(gè)字符
        console.log(reg.test('abc'))    // false
        console.log(reg.test('a'))    // true
        console.log(reg.test('b'))    // true
        console.log(reg.test('c'))    // true
        console.log(reg.test('@'))    // false
</script>

小練習(xí)
問題: 或(|) 的分界線在哪里?

<script>
    const reg = /^abc|def$/      // 這段正則什么含義?
    
    const reg1 = /^ab(c|d)ef$/   // 這段正則什么含義?

</script>

或( | )的分界線是小括號(hào)或者正則的邊界

<script>
    const reg = /^abc|def$/      // 這段正則什么含義?
    *看第一個(gè),沒有小括號(hào),那或的分界線就是到正則的邊界,那么上述的題就可以分解為兩個(gè)部分
    *1.^abc
    *2.def$
    *這兩個(gè)部分的意思就是字符串以abc開頭,以def結(jié)尾,但是因?yàn)闂l件是或所以滿足其中一個(gè)就可以了
    console.log(reg.test('abc12345678'))     // true
    console.log(reg.test('12345678def'))     // true
    console.log(reg.test('1234abcdef5678'))     // false

    const reg1 = /^ab(c|d)ef$/   // 這段正則什么含義?
    *第二個(gè),有小括號(hào),那么或的邊界線就是小括號(hào)
    *把它拆開看就是 ^ab (c|d) ef$
    *意思就是字符串以ab開頭,ef結(jié)尾,中間要么是c要么是d
    console.log(reg1.test('abcef'))  // true
    console.log(reg1.test('abdef'))  // true
    console.log(reg1.test('bdef'))  // false
    console.log(reg1.test('abde'))  // false
</script>

重復(fù)元字符

符號(hào): \1,\2,\3…\9,代表第幾個(gè)小括號(hào)的值

<span></span>
<script>
   *  /(abc|def)\1/
   *  小括號(hào) 內(nèi) 為 abc    \1 這個(gè)位置也需要是 abc
   *  小括號(hào) 內(nèi) 為 def    \1 這個(gè)位置也需要是 def

        const reg = /^(abc|def)\1$/ // 小括號(hào)內(nèi)是什么 \1 的位置就應(yīng)該是什么
        console.log(reg.test('abcdef')) // false
        console.log(reg.test('abcabc')) // true
        console.log(reg.test('defabc')) // false
        console.log(reg.test('defdef')) // true

        const reg1 = /^(abc|def){2}$/   // 小括號(hào)的內(nèi)容, 出現(xiàn)兩次, 但是每次的值, 可以不同
        console.log(reg1.test('abcdef')) // true
        console.log(reg1.test('abcabc')) // true
        console.log(reg1.test('defabc')) // true
        console.log(reg1.test('defdef')) // true
         
        const reg2 = /^<(p|span)><\/\1>$/
        console.log(reg2.test('<span></span>')) // true
        console.log(reg2.test('<p></p>'))   // true
        console.log(reg2.test('<p></span>'))    // false
</script>

正則的標(biāo)識(shí)符(修飾符)

書寫在正則表達(dá)式的外面,用于描述整個(gè)正則表達(dá)式

  1. i
    忽略大小寫
  2. g
    全局
<script>
       const reg = /^[a-c]$/
       console.log(reg.test('a'))  // true
       console.log(reg.test('A'))  // false

        
       const reg1 = /^[a-c]$/i // 忽略大小寫
       console.log(reg1.test('a'))  // true
       console.log(reg1.test('A'))  // true
</script>

正則表達(dá)式的捕獲

語法:正則.exec(字符串)

  1. 沒有捕獲到: 直接返回一個(gè) null
  2. 捕獲到
    2.1 沒有小括號(hào)也沒g 的情況, 永遠(yuǎn)捕獲的都是下標(biāo)0開始的第一個(gè)符合條件的
    2.2 沒有小括號(hào), 但是有修飾符g 的情況
    第一次捕獲完成后, 第二次開始的時(shí)候, 會(huì)從第一次捕獲結(jié)束的位置開始
    第三次開始的時(shí)候, 會(huì)從第二次捕獲結(jié)束的位置開始
    當(dāng)所有的匹配項(xiàng)都匹配完成后, 會(huì)返回一個(gè) null
    當(dāng)再次捕獲的時(shí)候, 就從下標(biāo)0重新開始
    2.3有小括號(hào),下標(biāo)0 還是我們正常捕獲到的內(nèi)容,從 下標(biāo)1開始, 就是每個(gè)小括號(hào)捕獲到的內(nèi)容
<script>
        // 1. 沒有捕獲到
        const reg = /\d{3}/
        console.log(reg.exec('zxcvbnm'))    // null

        // 2.1 沒有小括號(hào), 也沒有 g
        const reg = /\d{3}/
        console.log(reg.exec('z123xc456vb789nm000'))  //123
        console.log(reg.exec('z123xc456vb789nm000'))  //123
        console.log(reg.exec('z123xc456vb789nm000'))  //123

        // 2.2 有修飾符 g
        const reg = /\d{3}/g
        console.log(reg.exec('z123xc456vb789nm000'))    // 123
        console.log(reg.exec('z123xc456vb789nm000'))    // 456
        console.log(reg.exec('z123xc456vb789nm000'))    // 789
        console.log(reg.exec('z123xc456vb789nm000'))    // 000
        console.log(reg.exec('z123xc456vb789nm000'))    // null
        console.log(reg.exec('z123xc456vb789nm000'))    // 123

        // 2.3 有小括號(hào)
        const reg = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/
        const str = '我的身份證號(hào)是 411371200411081234'
        console.log(reg.exec(str))  //['411371200411081234', '4113', '71', '20', '04', '11', '08', '12', '34']

        const reg1 = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}|\dx)/
        const str1 = '我的身份證號(hào)是 41137120041108123x'  //['411371200411081234', '4113', '71', '20', '04', '11', '08', '12', '3x']
        console.log(reg1.exec(str1))
</script>

正則的兩大特性

1.懶惰
正常捕獲字符串的時(shí)候, 每次都從下標(biāo)0開始
解決方式: 給正則添加一個(gè)修飾符 g
2.貪婪
每次在捕獲的時(shí)候, 會(huì)盡可能的多捕獲一些東西
解決方法: 在原有的修飾符后添加一個(gè) ? 然后相當(dāng)于開啟非貪婪模式文章來源地址http://www.zghlxwxcb.cn/news/detail-753975.html

<script>
         *      貪婪限定符
         *          *
         *          +
         *          ?
         *          {n,}
         *          {n,m}
         * 
         *      非貪婪限定符
         *          *?
         *          +?
         *          ??
         *          {n,}?
         *          {n,m}?
        const str = '<div class="box" id="box1"><span></span></div>'

        const reg = /<div.*>/   // 貪婪模式
        console.log(reg.exec(str))
        // ['<div class="box" id="box1"><span></span></div>']

        const reg1 = /<div.*?>/ // 非貪婪模式
        console.log(reg1.exec(str))
        //['<div class="box" id="box1">']
</script>

到了這里,關(guān)于JS中的正則表達(dá)式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JS -- 正則表達(dá)式教程

    ECMAScript 通過 RegExp 類型支持正則表達(dá)式。 上面兩種是等價(jià)的正則表達(dá)式 g: 執(zhí)行全局匹配(查找所有匹配,而非在找到第一個(gè)匹配后停止) i: 忽略大小寫 m: 多行匹配(第一行末尾結(jié)束后會(huì)在下一行連續(xù)匹配) 測試字符是否滿足正則表達(dá)式規(guī)則,返回 true / false 找到滿足正則

    2024年01月17日
    瀏覽(23)
  • 前端JavaScript入門-day08-正則表達(dá)式

    前端JavaScript入門-day08-正則表達(dá)式

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動(dòng)力,如果看完對你有幫助,請留下您的足跡) 目錄 介紹 語法? 元字符? 邊界符? 量詞? 字符類: 修飾符 正則表達(dá)式(Regular Expression)是用于匹配字符串中字符組合的模式。在 JavaScript中,正則表達(dá)式也是對象,通常用

    2024年02月13日
    瀏覽(40)
  • js 的正則表達(dá)式(二)

    js 的正則表達(dá)式(二)

    正則表達(dá)式分為普通字符和元字符。 普通字符: ????????僅能夠描述它們本身,這些字符稱作普通字符,例如所有的字母和數(shù)字。也就是說普通字符只能夠匹配字符串中與它們相同的字符。 元字符: ????????是一些具有特殊含義的字符,可以極大提高了靈活性和強(qiáng)大

    2024年02月11日
    瀏覽(22)
  • 【JS】一文學(xué)會(huì)正則表達(dá)式

    1.1什么是正則表達(dá)式 正則表達(dá)式( Regular Expression )是用于匹配字符串中字符組合的模式。在JavaScript中,正則表達(dá)式也是對象。 正則表通常被用來檢索、替換那些符合某個(gè)模式(規(guī)則)的文本。 例如驗(yàn)證表單: 用戶名表單只能輸入英文字母、數(shù)字或者下劃線, 昵稱輸入框

    2024年01月17日
    瀏覽(14)
  • JS——正則表達(dá)式(超詳細(xì))

    JS——正則表達(dá)式(超詳細(xì))

    正則表達(dá)式 是用于匹配字符串中字符組合的模式。在 JavaScript中,正則表達(dá)式也是對象。這些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、matchAll、replace、search 和 split 方法。 兩種方法:字面量方式、構(gòu)造函數(shù)方式 校驗(yàn)數(shù)據(jù) 測試字符是否滿足正則表達(dá)式規(guī)則,如

    2023年04月08日
    瀏覽(42)
  • 防止 JavaScript 中的正則表達(dá)式回溯

    正則表達(dá)式是用于在軟件應(yīng)用程序中操作和驗(yàn)證文本的強(qiáng)大工具。然而,某些正則表達(dá)式模式可能容易受到回溯的影響,這可能會(huì)導(dǎo)致超線性運(yùn)行時(shí),并可能導(dǎo)致DoS攻擊。在本文中,我們將探討什么是回溯、它如何導(dǎo)致性能問題以及如何在正則表達(dá)式中防止回溯。 回溯是正則

    2024年02月12日
    瀏覽(38)
  • JS正則表達(dá)式:常用正則手冊/RegExp/正則積累

    JS正則表達(dá)式:常用正則手冊/RegExp/正則積累

    一、正則基礎(chǔ)語法 JavaScript 正則表達(dá)式 | 菜鳥教程 JS正則表達(dá)式語法大全(非常詳細(xì)) 二、使用場景 2.1、 校驗(yàn)中國大陸手機(jī)號(hào)的正則表達(dá)式 正則 解釋 序號(hào) 正則 解釋 1 ^1 以數(shù)字 1 開頭 2 [3456789] 第二位可以是 3、4、5、6、7、8、9 中的任意一個(gè) 3 d{9} 后面是 9 個(gè)數(shù)字 示例代碼

    2024年02月14日
    瀏覽(22)
  • js表單驗(yàn)證(常用的正則表達(dá)式)

    js表單驗(yàn)證的正則表達(dá)式,test() 方法用于檢測一個(gè)字符串是否匹配某個(gè)模式,如果字符串中含有匹配的文本,則返回 true,否則返回 false。 語法:let reg=/正則表達(dá)式主體/修飾符(可選); 方括號(hào)用于查找某個(gè)范圍內(nèi)的字符: ? ? ? ? [1-10]查找任何從 1?至 10?的數(shù)字,[a-z]查找方括

    2024年01月17日
    瀏覽(19)
  • JS正則表達(dá)式只能輸入數(shù)字跟字母

    ###最近需要些js控制一個(gè)輸入驗(yàn)證,搞了好多文字,東湊西并終于匯總了。只要控制不給輸入中文,空格,特殊字符就是 只能輸入數(shù)字跟字母了,反過來實(shí)現(xiàn) https://www.jb51.cc/nodejs/993719.html https://www.codenong.com/cs105929828/

    2024年02月12日
    瀏覽(23)
  • js中如何在正則表達(dá)式中放入一個(gè)變量呢

    工作中碰見了這樣的業(yè)務(wù) 因?yàn)槠匠懙恼齽t 喜歡 直接 // 寫正則匹配的表達(dá)式 突然有一天 我的正則表達(dá)式要從一個(gè) 變量中 取到 跟往常的有點(diǎn)不用 假設(shè) var name = “zhao” var str = “hello world zhao aaa”; 想找到 zhao在字符串中位置 然后 zhao我又是定義了一個(gè)變量 才這樣的 var a

    2023年04月17日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包