es6語(yǔ)法 正則

正則 規(guī)則
正則表達(dá)式 規(guī)則表達(dá)式
Regular Expression
弄一個(gè)正則:
new RegExp('表達(dá)式',['選項(xiàng)']);

字符串上面有兩個(gè)方法:
str.search(expr或字符串) //查找,搜索
在str中找,找字符串或表達(dá)式expr匹配的內(nèi)容,如果找到的話(huà),
就返回第1個(gè)出現(xiàn)的位置,如果找不到,就返回-1
-- indexOf

    var exp = new RegExp('A');
    str.search(exp);

str.match(expr或字符串);  //匹配
    在str中匹配,按expr或字符串來(lái)匹配,如果能匹配到,
    返回匹配結(jié)果的數(shù)組,如果匹配不到,返回 null
    
    match方法,通常是配合正則表達(dá)式來(lái)使用。

正則中的選項(xiàng):

g   global  全局(在全局,在整個(gè)字符串中找,如果不加這個(gè)選項(xiàng),那么只匹配一次)
var expr = new RegExp('A','g'); //在整個(gè)字符串中匹配 A

i   ignore  忽略大小寫(xiě)

new RegExp('a','gi');   //選項(xiàng)可以寫(xiě)在一起,并且沒(méi)有選后順序

正則的簡(jiǎn)寫(xiě):

不簡(jiǎn)寫(xiě):  var expr = new RegExp('a','gi');
簡(jiǎn)寫(xiě):
    /表達(dá)式/選項(xiàng)
    var expr = /a/gi;

轉(zhuǎn)義:
字符串轉(zhuǎn)義: 換行 \n
\n 換行
\ 顯示一個(gè)
\\顯示兩個(gè) \
正則里轉(zhuǎn)義:
\d 數(shù)字

正則的特性:
1、懶 g
var str = 'sdfd2332';
str.match(/\d/) --> 2
2、笨
var str = 'dss23 23fs fd2332s';
str.match(/\d/g); --> 2,3,2,3,2,3,3,2

    解決笨: 量詞

    正則里量詞:
        +   有一個(gè)或多個(gè)---  最少有1個(gè),最多不限
        ?   有0個(gè)或1個(gè) -- 最少有0個(gè),最多1個(gè)  —— 有或沒(méi)有
        *   最少0個(gè),最多不限 ——建議盡量少用,因?yàn)樾实?
    var str = 'dss23 23fs fd2332s';
    str.match(/\d+/g);  --> 23,23,2332 
    
3、貪
    var str = 'dss234566778876555678 23fs fd2332s';
    str.match(/\d+/g);  

正則特性: 懶 笨 貪

敏感詞過(guò)濾:
思路:就是把一些預(yù)先設(shè)定好的詞匯,用
來(lái)代替
字符串的方法:
str.replace('要替換的東西','替換成什么');
let str = '我們國(guó)家真好';
str.replace('國(guó)家','
');
str.replace方法: 只能替換一次
*replace如果不配合正則使用,它就是一個(gè)廢物
str.replace('要替換的東西或正則','替換成什么');
str.replace('要替換的東西或正則','替換成什么字符串 或 自定義函數(shù)');
str.replace('a','b'); //把a(bǔ)替換成b了

        str.replace('a',function(s){
            //s  表示的就是每次匹配的結(jié)果
            //返回值 返回的是什么,就替換成什么
        });

正則中的或: |

小總結(jié):
new RegExp(表達(dá)式,選項(xiàng));
str.search
str.match
str.replace
懶 (會(huì)享受) 笨(萌) 貪(有追求)

正則中的修飾:
^ 行首 匹配的是一行第一個(gè)字符的前面
$ 行尾 匹配的是一行最后一個(gè)字符的后面

選項(xiàng):
    g       全局
    i       忽略大小寫(xiě)
    m       多行模式 multi-line

^   行首  
$   行尾
    
單行模式:匹配的整個(gè)字符串的開(kāi)頭和結(jié)尾
多行模式:匹配的一行的開(kāi)頭和結(jié)尾

選項(xiàng):
g i m
/\d/gim
/\d/img
量詞:
{n} n個(gè)
{n,m} 最少n個(gè),最多m個(gè)
{n,} 最少n個(gè),最多不限
{0,1} 最少0個(gè),最多1個(gè)—— ?
{0,} 最少0個(gè),最多不限——*
{1,} 最少1個(gè),最多不限——+
+ 最少1個(gè),最多不限
* 最少0個(gè),最多不限
? 最少0個(gè),最多1個(gè)
正則中的 []:
1)或的關(guān)系
a[bce]c abc acc aec
2)范圍 [-]
[0-9] 從0到9
[a-z] 從a到z
[A-Z] 從A到Z
[a-zA-Z] a到z 或者 A到Z (大寫(xiě)字母或小寫(xiě)字母——所有字母)
[12-49] 1或 者2到4或者 9 (1,2,3,4,9)

年齡:滿(mǎn)18周歲  18-100歲
    18
    19
    20-99
    100
    /[18-100]/  ×
    
    把問(wèn)題拆解,拆解一個(gè)一個(gè)的簡(jiǎn)單問(wèn)題(在這個(gè)例子,注意所有的東西都是字符)

    要求:  18 19 20 21 ..... 100
    解題:
        18,19 :  1[89]
        20-99:  [2-9]\d
        100:        100
        
        (1[89]) | ([2-9]\d) | (100)

3)排除 [^]
排除[^xxx] ^ 后面的字符

a[^bc]d     第一個(gè)字符是a
            第二個(gè)字符不能是 b,也不能是c
            第三個(gè)字符是d

轉(zhuǎn)義:
\d 表示所有數(shù)字
\w 字母、數(shù)字、下劃線(xiàn)
\s 空白 (空格 換行 tab)

\D  非數(shù)字
\W  不是 字母、數(shù)字、下劃線(xiàn) _
\S  不是空白

\b  單詞邊界(任何可以分隔單詞的東西)
***還有好多自己去看

str.search()
str.match()

正則對(duì)象.test('字符串')

var reg = new RegExp('\d+','g');
reg.test('sds232')
--如果不能匹配 ,返回 true
--如果能匹配,返回false
reg.test()
——有一些嚴(yán)重性問(wèn)題,不太嚴(yán)謹(jǐn)
用test,需要在表達(dá)式的前后,加 ^ $
在正則中,如果使用 或(|) ,那么一定要加括號(hào)——每個(gè)條件和整體都加括號(hào)

例1:
驗(yàn)證手機(jī)號(hào):
整體11位
第一位:1 1
第二位:3,4,5,7,8 [34578]
剩余部分: \d{9}

    1[34578]\d{9}

例2:
座機(jī)號(hào)
8723678
87232982
010-83232323
0423-3239325

    規(guī)則:
    
        區(qū)號(hào)          電話(huà)號(hào)
    
    區(qū)號(hào):
        1)第1位                   0
        2)第2位不是0                [1-9]
        2)第3位或第4位是數(shù)字        \d{1,2}
        4)- 1個(gè)
        
        整體上看,可有可無(wú)           ?
    電話(huà):
        第1位不是0      [1-9]
        6到7位數(shù)字      \d{6,7}

    合: (0[1-9]\d{1,2}\-)?[1-9]\d{6,7})

例3:
郵箱:
zhanghaibin@zhinengshe.com
zhang@sina.com.cn
6181742@qq.com
zhang_1234@sohu.com

    分為幾個(gè)部分:
        郵箱的名字(@前面):
            字母,數(shù)字,下劃線(xiàn),最長(zhǎng)20位
            \w{1,20}

        @

        域名:
            字母,數(shù)字,-
            [a-zA-Z0-9\-]{1,10}
        域名后綴:
            .com
            .cn
            .com.cn
            
            (\.[a-zA-Z]{2,3}){1,2}

    合:\w{1,20}@[a-zA-Z0-9\-]{1,10}(\.[a-zA-Z]{2,3}){1,2}

關(guān)于字符串的幾個(gè)小方法:
indexOf lastIndexOf charAt substring toUpperCase toLowerCase split match search
1、去除首尾空格
jquery: $.trim('| s sds fds |')

原生:  str.trim()  ——   不支持低級(jí)瀏覽器

/^\s+|\s+$/g

2、ES6 判斷是否由小串開(kāi)始
str.startsWith('abc'); 不兼容IE系
自己用正則實(shí)現(xiàn): /^abc/
3、ES6 判斷是否由小串結(jié)尾
str.endsWith('bd'); 不兼容IE系
自己用正則實(shí)現(xiàn):/bd$/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容