# 正则表达式

120 阅读1分钟

正则表达式

  1. 介绍

  2. 语法

  3. 元字符

  4. 修饰符

    .1 什么是正则表达式

正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象 通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式

​ 2.正则表达式在 JavaScript中的使用场景: 例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配) 比如用户名: /^[a-z0-9_-]{3,16}$/ 过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等 。

1650097105978

  1. 定义正则表达式语法:1650097302240

    比如:其中 / / 是正则表达式字面量 1650097343676

2.判断是否有符合规则的字符串: test() 方法 用来查看正则表达式与指定的字符串是否匹配 语法:1650097547618

比如:

1650097576874

如果正则表达式与指定的字符串匹配 ,返回true,否则false

检索(查找)符合规则的字符串: exec() 方法 在一个指定字符串中执行一个搜索匹配 语法:1650097743297

比如:1650097765204

如果匹配成功,exec() 方法返回一个数组,否则返回null

正则表达式检测查找 test方法和exec方法区别 test方法 用于判断是否有符合规则的字符串,返回的是布尔值 找到返回true,否则false exec方法用于检索(查找)符合规则的字符串,找到返回数组,否则为 null

<body>
    <script>
        // 正则表达式的作用  寻找字符串 检测 这个字符串郁闷郁闷我想要的文字
        const str = `对努力的自己说加油,提醒虚度的自己不再荒废。相信梦想,梦想才会相信你,
                    有一种落差是,你配不上自己的野心,也辜负了所受的苦难。`

        //判断一下这个字符串有没有梦想两个字

        //定义规则
        const reg = /梦想/;
        
        //规则和字符串匹配
       console.log( reg.test(str));  //有就返回true  没有就返回false
    </script>
</body>

1650100407235

元字符

普通字符: 大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。 也就是说普通字符只能够匹配字符串中与它们相同的字符。 元字符(特殊字符) 是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能。 比如,规定用户只能输入英文26个英文字母,普通字符的话 abcdefghijklm….. 但是换成元字符写法: [a-z]
参考文档: MDN:developer.mozilla.org/zh-CN/docs/… 正则测试工具: tool.oschina.net/regex

  1. 边界符

正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符

1650100737634

如果 ^ 和 $ 在一起,表示必须是精确匹配。

<body>
    <script>
       
        const str = `梦想`

        //定义规则
        const reg = /^梦想$/; //检测的字符串 必须要以梦字开头  想字结尾  且字符串个数一样 (就是原封不动输出)

        //规则和字符串匹配
       console.log( reg.test(str));  //有就返回true  没有就返回false
    </script>
</body>

1650101431757

如果 ^ 开头

<body>
    <script>
       
        const str = `梦想123`

        //定义规则
        const reg = /^梦想/; //检测的字符串 必须要以梦想两个字开头  后边随便你怎么输入

        //规则和字符串匹配
       console.log( reg.test(str));  //有就返回true  没有就返回false
    </script>
</body>

1650101699535

如果 $结尾

<body>
    <script>
       
        const str = `121#@¥%……梦想`

        //定义规则
        const reg = /梦想$/; //检测的字符串 必须要以梦想结尾  前边随便你怎么输入

        //规则和字符串匹配
       console.log( reg.test(str));  //有就返回true  没有就返回false
    </script>
</body>

1650101979745

2. 量词 (表示重复次数)

量词用来 设定某个模式出现的次数

1650103357902

注意: 逗号左右两侧千万不要出现空格

<body>
    <script>
        // const str = '路飞';
        // const reg = /路飞/;
        // console.log(reg.test(str));   ///路飞/.test('路飞')   左边放规则 右边被检测的字符串

       
        //*表示 放在它前门那一个字符 可以出现0次或者 多次
        console.log(/^路*$/.test('') );         //true
        console.log(/^路*$/.test('路') );       //true
        console.log(/^路*$/.test('路路') );      //true
        console.log(/^路*$/.test('路路路') );   //true

        //+ 表示 放在它前面那一个字符,最低出现一次或者多次
        console.log(/^路+$/.test('') );         //false
        console.log(/^路+$/.test('路') );       //true
        console.log(/^路+$/.test('路路') );     //true
        console.log(/^路+$/.test('路路路') );   //true

        //? 表示 放在它前面那一个字符,出现0次或者1次
         console.log(/^路?$/.test('') );         //true
         console.log(/^路?$/.test('路') );       //true
         console.log(/^路?$/.test('路路') );     //false
         console.log(/^路?$/.test('路路路') );   //false


        //{n}  放在前它前面的那个字符 出现n次
         console.log( /^路{2}$/.test(''));          //false
         console.log( /^路{2}$/.test('路'));        //false
         console.log( /^路{2}$/.test('路路'));      //true
         console.log( /^路{2}$/.test('路路路'));     //false

         //{n,}  放在它前面的那个字符最少出现n次
         console.log( /^路{2,}$/.test(''));         //false
         console.log( /^路{2,}$/.test('路'));       //false
         console.log( /^路{2,}$/.test('路路'));     //true
         console.log( /^路{2,}$/.test('路路路'));    //true

         //{n,m}  放在它前面的那个字符最少出现n次  最大是m次
         console.log( /^路{0,2}$/.test(''));         //true
         console.log( /^路{0,2}$/.test('路'));       //true
         console.log( /^路{0,2}$/.test('路路'));     //true
         console.log( /^路{0,2}$/.test('路路路'));   //false
    </script>
</body>

3. 字符类 (比如 \d 表示 0~9)

字符类: (3) 预定义:指的是某些常见模式的简写方式。

1650113104491

<body>
    <script>
        //.表示除了(换行符之外)任意字符
         console.log(/./.test('飞'));          //true
         console.log(/路.飞/.test('路飞'));    //false
         console.log(/路.飞/.test('路飞飞'));  //true
         console.log(/路.飞/.test('路中飞'));  //true

        //\d 表示数字
         console.log(/\d/.test('路飞'));        //false
         console.log(/\d/.test('1路飞'));       //true
         console.log(/\d/.test('路2飞'));       //true
         console.log(/\d/.test('路飞3'));       //true

        //\D 表示不是数字之外的任意一个字符(只要不是纯数字就行)
         console.log(/\D/.test('路飞'));          //true
         console.log(/\D/.test('112a'));          //true
         console.log(/\D/.test('aaa'));           //true
         console.log(/\D/.test('111'));           //false

        //\w 表示 字母 数字 下划线
         console.log(/\w/.test('123'));         //true
         console.log(/\w/.test('asd'));          //true
        console.log(/\w/.test('_12%%s'));      //true
         console.log(/\w/.test('@#$%^& '));     //false

        //\W 表示 除去字母 数字 下划线 之外字符就行
        console.log(/\W/.test('123'));        //false
        console.log(/\W/.test('%%%'));        //true
       
        //\s 匹配空格  有空格就行
        console.log(/\s/.test('123'));        //false
        console.log(/\s/.test('12 3'));       //true

        //\S 除了空格之外的符号
        console.log(/\S/.test('123'));       //true
        console.log(/\S/.test(' '));         //flase
        console.log(/\S/.test('   '));       //flase
        
    </script>
</body>

(2.)

<body>
    <script>
        // //[ab] 表示可以匹配a或者b
         console.log(/[ab]/.test('a'));   //true
         console.log(/[ab]/.test('b'));   //true
         console.log(/[abc]/.test('d'));  //false
        
        // //表示a-z任意一个字母
         console.log(/[a-z]/.test('gg'));  //true
         console.log(/[a-z]/.test('dd'));  //true
         console.log(/[a-z]/.test('123')); //false
         console.log(/[a-z]/.test('@@@')); //false

        // //0-9任意一个数字
         console.log(/[0-9]/.test('8'));    //true
         console.log(/[0-100]/.test('0'));  //true

        // //A-Z任意一个数字
         console.log(/[A-Z]/.test('a'));   //false
         console.log(/[A-Z]/.test('A'));  //true

        //同时满足 0-9 a-z A-Z
        console.log(/[0-9 a-z A-Z]/.test('1'));  //true
        console.log(/[0-9 a-z A-Z]/.test('a'));  //true
        console.log(/[0-9 a-z A-Z]/.test('@'));  //false
        console.log(/[0-9 a-z A-Z]/.test(''));  //false
    </script>
</body>