十三、正则表达式

170 阅读1分钟

1. 正则表达式的作用

  • 匹配有规律的字符串

2. 正则表达式的创建方式

2.1 构造函数创建正则 ---> RegExp是一个内置的类

var reg = new RegExp ( "xxx","igm");

console.log(reg); // object。正则属于object类型,存储在堆中

  • 参数1:正则内容;

  • 参数2:模式修饰符。可选值:i、g、m

    • i:忽略大小写
    • g:全局匹配
    • m:换行

2.2 正则字面量表达式(推荐)

var reg = /xxx/igm;

3. 字符串支持正则的4种方法

3.1 str.match(reg); ---> 满足返回数组,不满足返回null

3.2 str.search(reg); ---> 满足返回下标,不满足返回-1

3.3 str.split(reg); ---> 返回一个数组

3.4 str.replace(reg,"替换的新字符"); ---> 返回替换后的新字符串

4. 正则表达式匹配字符串的2种方法

4.1 reg.exec(str); ---> 满足返回数组,不满足返回null

4.2 reg.test(str); ---> 满足返回true,不满足返回false

5. 正则的元字符

5.1 . ---> 任意字符。 一个点 . 表示一个任意的字符

5.2 * ---> 任意次数。 0 - 无穷

5.3 + ---> 至少1次。 1 - 无穷

5.4 ? ---> 0次或1次。0 - 1

5.5 ^ ---> 开始位置。

5.6 $ ---> 结束位置。

5.7 {} ---> 固定次数。

  • {n} ---> 固定n次。n
  • {n,m} ---> 最少n次,最多m次。n - m
  • {n,} ---> 最少n次,最多无穷。n - 无穷

5.8 [] ---> 字符的取值范围。一个中括号 [] 代表一个字符

  • [a-z] ---> a 到 z 其中一个字符
  • [az] ---> a 和 z 其中一个字符
  • [^a-z] ---> 不是 a 到 z 的任意一个字符。^在 [] 中表示取反

5.9 \ ---> 转义符。将有语义的字符转换为无语义的纯字符

5.10 | ---> 或模式。匹配其中一种字符串。

5.11 () ---> 分组模式。将内容作为整体进行匹配。

5.12 ?: ---> 非捕获。匹配时不捕获该内容

5.13 \w ---> [a-zA-Z0-9_]

5.14 \W ---> [^a-zA-Z0-9_]

5.15 \d ---> [0-9]

5.16 \D ---> [^0-9]

5.17 \s ---> 空白符

5.18 \S ---> 非空白符

【补充】在字符串中: \n 表示换行; \r 表示回车

6. 常用的正则表达式

6.1 邮政编码(共6位数字, 第一位不能为0)

var reg = /^[1-9]\d{5}$/;

6.2 电子邮件(xxxx@xxx(.xxx)+)

var reg = /^\w+(\.\w+)@\w+(\.\w+)+$/;

6.3 手机号(13或14或15或18开头的11位数字)

var reg = /^1[3458]\d{9}$/; var reg = /^1[3-9]\d{9}$/;

6.4 用户名(只能使用数字字母下划线, 且数字不能开头, 长度在6-15位)

var reg = /^[a-z_]\w{5,14}$/i;

6.5 删除字符串所有的空格

str.replace(/\s+/g,'');

6.6 删除字符串头部的空格

str.replace(/^\s+/,'');

6.7 删除字符串尾部的空格

str.replace(/\s+$/,'');

6.8 日期(假设有31天)

var reg = /^([012]\d)|10|20|30|31$/;