美文网首页JavaScript前端开发那些事儿
JS相关知识学习笔记(四)——初识正则表达式

JS相关知识学习笔记(四)——初识正则表达式

作者: 喑宝儿 | 来源:发表于2021-05-22 19:24 被阅读0次
    1、正则表达式的常用场景

    (1)验证表单:匹配字符组合

    (2)替换一些关键词,如:敏感词汇

    (3)从字符串中提取想要的字符片段

    2、正则表达式在JS中的使用

    (1)创建

    • 利用RegExp对象的构造函数创建
    var reg = new RegExp(/123/)
    
    • 利用字面量创建
    var reg = /123/  // 正则表达式要写在'//'中,其中不能为空,不然会变为注释符
    

    (2)检查字符串是否符合正则表达式要求的规范

        正则规则.test(要检测的字符串)     
    
        返回值为布尔值,符合则为true,不符合为false
    
    var reg = /123/     // /123/代表是否包含123
    console.log(reg.test('123456'))  // true
    
    3、边界符
    ^ 要以^之后的字符开头
    $ 要以$之后的字符结尾
    var reg = /^abc/
    console.log('abcd')  // true
    console.log('dabc')  // false
    
    var reg1 = /abc$/
    console.log('abcd')  // false
    console.log('dabc')  // true
    

    同时使用^和$代表精准匹配,即只能是其中的字符才可以

    var reg = /^abc$/
    console.log('abcd')  // false
    console.log('dabc')  // false
    console.log('abc')  // true
    
    4、字符类
    [ ] 只要包含其中的任意一个字符就为true(一个字符)
    x-y - :代表范围,eg:a-z 从a到z
    ^ 一般放在字符前面代表取反,eg:^[abc] 字符若为abc其中一个,则为false,其余字符为true
    var reg = /[a-z]/
    console.log('x')  // true
    console.log('1')  //false
    
    var reg1 = /^[a-z]$/  // 必须是a-z之间的某一个
    console.log('d')  // true
    
    var reg2 = /^[^abc]$/  // 第一个^为界定符,第二个^为取反
    console.log('x')  // true
    
    5、量词符
    a* a重复0次火多次
    a+ a重复1次或多次
    a? a重复0次火1次
    {n} 重复n次
    {n, } 重复n次或多次
    {n1, n2} 重复n1到n2次

    量词仅修饰紧挨着它的字符

    // 以a*为例
    var reg = /^a*$/
    console.log('')  // true
    console.log('a')  //true
    console.log('aaa')  //true
    
    
    var reg1 = /^a{3}$/
    console.log('aaa')  // true
    console.log('aaaa')  //false
    
    var reg2 = /^a{3,}$/
    console.log('aaa')  // true
    console.log('aaaa')  //true
    
    var reg3 = /^a{3,6}$/   // 量词范围中间不可以有空格{3,6}而不是{3, 6}
    console.log('aaa')  // true
    console.log('aaaa')  //true
    console.log('aaaaaaa')  //false
    

    利用以上规则实现一个邮箱名验证正则:

    • 可以包含数字、字母、下划线,要以字母开头,最少为6位,最多为18位

      /^[a-zA-Z][a-zA-Z0-9_]{5,17}/
      
    6、预定义类
    \d 匹配0-9之间的任意数字,等同于[0-9]
    \D 匹配0-9以外的其他字符,等同于[^0-9],即取反
    \w 匹配任意字母、数字和下划线,等同于[a-zA-Z0-9_]
    \W 匹配字母、数字和下划线以外的字符,等同于[^a-zA-Z0-9_]
    \s 匹配空格(制表符/换行符/空格符等),等同于[\t\r\n\v\f]
    \S 匹配非空格字符
    | 或者的意思
    //  座机号码验证正则:010-12345678  或者  0530-1234567
    var rg = /^(\d{3}-\d{8}|\d{4}-\d{7})$/
    
    //  | 或者引起的歧义
    //  以abc中任一个为开头或以123中的任何一个为结尾都对
    var reg = /^[abc]|[123]$/  
    console.log('aaa')  //  true
    console.log('a11')  //  true
    
    //  只有abc中的任何一个,或者123中的任何一个符合条件,则需要将|两边的作为一个整体
    var reg1 = /^([abc]|[123])$/
    console.log(reg1.test('a'))  // true
    console.log(reg1.test('2'))  // true
    console.log(reg1.test('a2'))  // false
    
    //  | 在字符中表示或者,在[]中也表示一个字符
    var regtel = /^1[3|5|7|8|9]\d{9}$/  // 手机号码验证
    console.log(regtel.test('13245678901'))  // true
    console.log(regtel.test('1|245678901'))  // true 电话号码中没有|,正则表达式应修改为:/^1[35789]\d{9}$/
    
    7、replace 正则表达式的替换

    replace(reg, 替换内容)

    • reg 要被替换的内容(正则)

    • 返回值为替换完成的结果

    var str = '她看起来状态很不错'
    console.log(str.replace(/很不错/, 'so good'))  // 她看起来状态so good
    

    replace只能替换第一个符合条件的内容,如果需要替换多个,需要借助修饰符[swicth],加在正则表达式之后

    switch的值有3个:

    g 全局
    i 忽略大小写
    gi 全局且忽略大小写
    var str = '老师讲课很有激情,希望能够一直保持这种激情'
    console.log(str.replace(/激情/, '**'))  // 老师讲课很有**,希望能够一直保持这种激情
    console.log(str.replace(/激情/g, '**'))  // 老师讲课很有**,希望能够一直保持这种**
    

    相关文章

      网友评论

        本文标题:JS相关知识学习笔记(四)——初识正则表达式

        本文链接:https://www.haomeiwen.com/subject/zpdojltx.html