参考文章:

  1. 常用正则表达式速查手册

字符

  1. 元字符

JavaScript高级程序设计实记——正则 - 图1

  1. 反义字符

JavaScript高级程序设计实记——正则 - 图2

  1. 转义字符

JavaScript高级程序设计实记——正则 - 图3

  1. 重复匹配

JavaScript高级程序设计实记——正则 - 图4

  1. 分组/捕获

JavaScript高级程序设计实记——正则 - 图5

  1. 贪婪与惰性

JavaScript高级程序设计实记——正则 - 图6

  1. 修饰符

JavaScript高级程序设计实记——正则 - 图7

RegExp

定义正则表达式有两种方式:

  1. 字面量形式:var pattern = /.\w/gi;;
  2. RegExp 构造函数形式:var pattern = new RegExp('.\\w', 'gi');

正则对象(使用 RegExp 构造函数创建)方法有:

  1. pattern.test(string):对传入的 string 字符串进行模式匹配,返回一个布尔值,表示字符串是否匹配该正则。
  2. pattern.exec(string):返回一个匹配项数组。

字符串对象的match()search()split()replace()等方法也与正则表达式相关。

常用正则表达式

数字

  1. 校验数字:

    1. var regExp = /^[0-9]*$/;
    2. console.log(regExp.test('110')); // 输出: true
  2. 检验至少m位且至多n位数字:

    1. var regExp = /^\d{3,5}$/; // "{m,n}"设置上下限可约束范围
    2. console.log(regExp.test('110')); // 输出: true
    3. console.log(regExp.test('11')); // 输出: false
    4. console.log(regExp.test('111110')); // 输出: false
  3. 检验浮点数:

    1. var regExp = /^(-?\d+)(\.\d+)$/;
    2. console.log(regExp.test('11.0')); // 输出: true
    3. console.log(regExp.test('0.11')); // 输出: true
    4. console.log(regExp.test('-11.0')); // 输出: true
    5. console.log(regExp.test('-0.11')); // 输出: true
    6. console.log(regExp.test('11')); // 输出: false

其他

  1. 检验YYYY-MM-DD HH-mm格式的时间戳:

    1. var regExp = /^\d{4}-\d{1,2}-\d{1,2}\s\d{2}:\d{2}$/;
    2. console.log(regExp.test('2018-04-23 23:00')); // 输出: true
  2. 检查 HTML 标签和匹配#id形式的字符串:

    1. var regExp = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
    2. console.log(regExp.exec('<h1></h1>')); // 输出: ["<h1></h1>", "<h1></h1>", undefined]
    3. console.log(regExp.exec('#head')); // 输出: ["#head", undefined, "head"]
  3. 匹配最外层 HTML 标签名:

    1. var regExp = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
    2. console.log(regExp.exec('<h1><span></span></h1>')[1]); // 输出: "h1"
  4. 匹配校验手机号:

    1. var regExp = /^0?1[3|4|5|7|8][0-9]\d{8}$/;
    2. console.log(regExp.test('13415156317')); // 输出: true
  5. 匹配电子邮箱:

    1. var regExp = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    2. console.log(regExp.test('13415156317@163.com')); // 输出: true