Web APIs 第七天 正则表达式

一.正则表达式

1.什么是正则表达式

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

2.正则表达式的作用

  • 表单验证(匹配)
  • 过滤敏感词(替换)
  • 字符串中提取我们想要的部分(提取)

3.语法

正则分为两步:

  • 定义规则
  • 查找

定义正则表达式语法:
let 变量名 = /表达式/
其中 / / 是正则表达式字面量
判断是否有符合规则的字符串: test() 方法 用来查看正则表达式与指定的字符串是否匹配,有返回true,否则返回false

        // 定义正则表达式
        let reg = /a/
        
        // 正则有test 方法 测试字符串中是否有符合正则模式的,有返回true,否则返回false
        console.log(reg.test('acb'))  //true
        console.log(reg.test('tgvs'))  //false

检索(查找)符合规则的字符串: exec() 方法 在一个指定字符串中执行一个搜索匹配,如果匹配成功,exec() 方法返回一个数组,否则返回null

        let reg2 = '廖东'
        let str = `天不生我廖东哥,前端开发皆BUG`
        let str2 = '前端程序员'
        console.log(reg2.exec(str))  //数组
        console.log(reg2.exec(str2))  // null

二.元字符

  • 普通字符: 大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。
  • 元字符(特殊字符) 是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能。
  • 比如,规定用户只能输入英文26个英文字母,普通字符的话 abcdefghijklm…..
  • 但是换成元字符写法: [a-z]

1.预定类

1.png

. 匹配除换行符之外的任何单个字符
对 . 进行转义 . 表示匹配点本身

2.正则优先级

或 | 优先级最低 ()优先级最高

<script>
        // 正则的优先级

        // 需求:匹配a或者b或者c

        // | 优先级最低   左右两边都是个单独的整体
        console.log(/f|boot/.test('f'))     //t
        console.log(/f|boot/.test('foot'))  //t
        console.log(/f|boot/.test('boot'))  //t
        console.log(/f|boot/.test('boo'))   //f
        console.log(/f|boot/.test('foo'))   //t 
        console.log(/f|boot/.test('oot'))   //f

        // () 优先级最高
        // 匹配的是 foot 或 boot
        console.log(/(f|b)oot/.test('f'))    //f
        console.log(/(f|b)oot/.test('foo'))  //f
        console.log(/(f|b)oot/.test('boo'))  //f
        console.log(/(f|b)oot/.test('oot'))  //f
        console.log(/(f|b)oot/.test('foot')) //t
        console.log(/(f|b)oot/.test('boot')) //t
    </script>

3.字符类元字符

  • [ ] 匹配字符集合
  • 比如 /[abc]/ 匹配 匹配a或b或c 任意一个
  • [ ] 自带了 或 的含义


    2.png
  • 在 [] 里面可以写 - 表示范围
    • /[0-9]/ 匹配0-9范围任意一个数字
    • [a-zA-Z0-9] 匹配a-z A-Z 0-9 任意一个
  • 在 [] 里面可以写 ^ 表示取反
    • [^abc] 匹配非 a b c 的任意字符

4.边界符

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


3.png

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

        // ^ $ 一起使用
        //以 chuan 开头以及结尾
        // ^ $ 一起使用  精确匹配  写啥匹配啥
        // 使用场景: 表单校验
        console.log(/^chuan$/.test('chuang'))  //false
        console.log(/^chuan$/.test('dachuan'))  //false
        console.log(/^chuan$/.test('chuanchuan')) //false
        console.log(/^chuan$/.test('chuan')) //true

5.量词

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

4.png

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

 // * >=0 精确匹配
        // a 为0次及以上  开头结尾
        console.log(/^a*$/.test(''))    //t
        console.log(/^a*$/.test('a'))   //t
        console.log(/^a*$/.test('aa'))  //t
        console.log(/^a*$/.test('aab')) //f

        // 量词就近修饰  匹配 chuann 
        console.log(/chuan{2}/.test('chuanchuan'))  // false

        // 加个括号 {2}就是 修饰整个chuan
        console.log(/(chuan){2}/.test('chuanchuan'))  // true

6.替换和修饰符

  • replace 替换
    语法: 字符串.replace(正则表达式, '替换的文本')
  • 修饰符
    • i 是单词 ignore 的缩写,正则匹配时字母不区分大小写
    • g 是单词 global 的缩写,匹配所有满足正则表达式的结果
    <script>
        let str = '  abc def  abcx  yzABCsff  '

        // 需求:将所有的空格去除掉
        // trim()  去除首尾空格

        // 字符串有replace方法
        //  语法: 字符串.replace(正则表达式, '替换的文本')
        //  使用正则匹配找到所以空格 替换为 ''(空字符)

        console.log(str)
        console.log(str.replace(/\s/,''))

        //正则修饰符  
        // g  global  全局匹配搜索   找所以的 
        console.log(str.replace(/\s/g,''))

        // i  ignore  忽略大小写
        // console.log(str.replace(/a/,'x'))
        console.log(str.replace(/a/ig,'x'))

    </script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容