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$/;