前端正则表达式基础

目标:解决两个问题

  • 不认识,怎么办?
  • 不会写,怎么办?
/^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/

实例化RegExp对象

字面量 :var reg = /\bis\b/g;

构造函数:var reg = new RegExp('\\bis\\b','g');

正则基础——修饰符

g    全局匹配(会查找全部匹配,不会在查找到第一个匹配时就中止)
i    执行对大小写不敏感的匹配
m    执行多行匹配ide

正则进阶——贪婪模式和非贪婪模式

// 贪婪模式(默认):

'1234ab'.replace(/\d{3,4}/g,'大')

// 非贪婪模式: 量词后加?

'1234ab'.replace(/\d{3,4}?/g,'大')

正则进阶——分组

// 使用()达到分组效果

'xingxing'.replace(/xing{2}/,'大’)

'xingxing'.replace(/(xing){2}/,'大')

正则进阶——或

// 使用 | 达到或的效果

Hai|xing

H(ai|xi)ng

正则进阶——前瞻和后顾

// 前瞻: exp1(?=exp2)     查找exp2前面的exp1

    'window2003'.replace(/window(?=\d{4})/,'大')

// 负前瞻:  exp1(?!exp2)     查找后面不是exp2的exp1

    'window200'.replace(/window(?!\d{4})/,'大')

// 后顾(js不支持):  (?<=exp2)exp1   查找exp2后面的exp1

    '2003window'.replace(/(?<=\d{4})window/g,'大')

// 负后顾(js不支持):  (?<!exp2)exp1   查找前面不是exp2的exp1

    '200window'.replace(/(?<!\d{4})window/g,'大')

参考资料

可视化工具:https://jex.im/regulex
慕课网视频教程:https://www.imooc.com/video/1...函数