JS正则表达式

对于正则表达式一直很懵,写个总结理清一下思路。-_-

  • 正则表达式语法
    • 字面量
    • 构造函数
 var reg = /\d/g;
 var reg = new RegExp('\\d','g');

tips: 构造函数方法中,\d中的反斜杠要转义

eg:

  var reg = /\d/g;
  var reg = new RegExp('\\d','g');
 '3e'.replace(reg,'t');

 => 'te'
  • 修饰符

    • g : 全局匹配
    • i : 只匹配小写
    • m : 多行搜索

    tips: 这里注意下m的使用例子

    var mulSrt="@123\n@456\n@890";
    mulSrt.replace(/^@\d/gm,'Q');
    
    =>
    "Q23
    Q56
    Q890"
  • 元字符

    • 原义文本字符
    • 元字符 (正则表达式中有特殊含义的非字母字符)
      eg:* + ? $ ^ . | \ ( ) { } [ ]

Tips: 正则表达式中的一个字符,对应字符串一个字符
eg: ab\t
对应 a b tab

  • 字符类,用 [ ] 构建一个类

    • 泛指符合某些特性的对象,不是特指字符
    • 如[abc],指把a b c 归为一类
    • [^abc] 表示不是a或b或c的内容。在范围内的^表示取反
    'a1b1c1d1'.replace(/[abc]/g,'x')
    => 'x1x1x1x1'
    'a1b1c1d1'.replace(/[^abc]/g,'x')
    =>"axbxcxxx"
  • 范围类

    • [a-z]
    • 表示a到z , 闭区间,包含 a、z本身
    • 范围内部可以连写
      eg: [a-zA-Z] 匹配小写a-z 和 大写A-Z
    • 如果要匹配横线,eg: [a-z-]
  • 预定义字符

    • . 除回车符和换行符之外的所有字符
    • \d 数字字符
    • \D 非数字字符
    • \w 单词字符(字母、数字、下划线)
    • \W 非单词字符
    • \s 空白符
    • \S 非空白符

    eg: ab+数字+任意字符
    ab\d.

  • 边界

    • ^ 开始
    • $ 结束
    • \b 单词有边界
    • \B 单词无边界
  • 量词

    • ? 最多出现一次
    • +至少出现一次
    • *任意次
    • {n} 出现n次
    • {n,m} n 到 m次
    • {n,} 至少出现n次
  • 贪婪模式

    Tips: 尽可能多地匹配,比如 {3,5}会匹配5次

    '12345678'.replace(/\d{3,6}/,'X');
    =>"X78"
  • 非贪婪模式

    • 尽可能少的匹配,在量词后加上?
    '12345678'.replace(/\d{3,6}?/,'X');
    => "X45678"
  • 分组 ( )

    • 用()进行分组,达到量词匹配
    /abc{3}/ 表示匹配c 3次
    /(abc){3}/ 表示匹配abc 3
    • 或 |
    'ByronsperByrCasper'.replace(/Byr(on|Ca)sper/g,'X')
    => "XX"
    • 反向引用
    '2016-11-25'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2-$3-$1');
    => "11-25-2016"
  • 前瞻

    • 正向 exp(?=assert)
    • 正向 exp(?=assert)
      eg: \w(?=\d) 匹配单词后面是数字
    'a2*34v8'.replace(/\w(?=\d)/g,'x')
    "x2*x4x8"

    最后几道测试题

    1. 匹配其中的 is 单词
      This is a test.

    2. 去掉http协议的jpg文件的协议头
      http://img.host/78.jpg

    3. 年/月/日 格式改成 日-月-年
      2006/02/03

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值