正则表达式的简单使用

182 阅读2分钟

正则表达式的使用

在一个字符串中寻找目标字符串是否存在,常用的简单的方法有includes或者indexof;

    var reg = "room";
    var str = "classroom";
    var isExist;
    // method1
    isExist = str.includes(reg);
    // method2
    isExist = str.indexOf(reg) > -1;

如果寻找一类字符串,就需要使用一个匹配模型或者匹配公式,那么,这个模型或公式就是正则表达式。

var reg = /room/;
var str = "classroom";
var isExist;
// method1
isExist = str.match(reg);
// method2
isExist = reg.test(str);
// 其他可以用到正则表达式的方法有: exec、matchAll、search、replace、split等

一、创建表达式的两种方式

  • 表达式字面量
var reg = /room/;
  • 构造函数
var reg = new RegExp("room");

二、正则表达式的分类

  • 由简单字符组成
var reg = /a/; // 匹配到的是第一个a
var str = "I am a student!";
var isExist = str.match(reg);
  • 由普通字符和带有功能含义的特殊字符组成
var reg = /\ba\b/; // 匹配到的是前后都是词边界的第二个a
var str = "I am a student!";
var isExist = str.match(reg);

三、正则表达式特殊字符功能分类

1、断言
  • 开头断言:^
  • 结束断言:$
  • 单词边界断言:\b
  • 非单词边界断言:\B
  • 向前断言:x(?=y)
  • 向前否定断言:x(?!y)
  • 向后断言:(?<=y)x
  • 向后否定断言:(?<!y)x
2、字符类
  • 数字:\d
  • 非数字:\D
  • 任何字母数字字符,包括下划线_:\w,相当[A-Za-z0-9_]
  • 非字母数字字符和下划线:\W
  • 其他:.、\s、\S、\t、\r、\n等
3、组合范围
  • 匹配任意字符:x|y
  • 字符集:[xyz] 或 [a-c]
  • 一个否定的字符集:[^xyz] 或 [^a-c]
  • 捕获组:(x)
4、量词
  • x*:0次或多次
  • x+:1次或多次
  • x?:0次或一次
  • x{n}:n次
  • x{n,}:至少n次
  • x{n,m}:最少n次,最多m次

四、正则表达式的可选参数

  • g:全局搜索
  • i:不区分大小写
  • m:多行搜索
  • s:允许.匹配换行符
  • u:使用unicode码匹配

五、正则表达式使用demo

// 电话号码:/1[3458]\d{9}/
// qq邮箱:/[1-9]\d{5,}@qq\.com/