正则表达式初识
一、作用
正则表达式的作用
- 给定的字符串是否符合正则表达式的过滤逻辑(匹配)
- 可以通过正则表达式, 从字符串中获取我们想要的特定部分(提取)
- 强大的字符串替换能力(替换)
二、使用
2.1 创建正则表达式对象
构造函数进行创建
var pattern = new RegExp(/book/);
直接量创建
var pattern = /book/;
2.2 参数
标志 | 说明 |
---|---|
i | 忽略大小写 |
g | 全局匹配 |
gi | 说明全局匹配+忽略大小写 |
m | 多行匹配 |
2.3 组成
2.3.1 边界符
边界符 | 说明 |
---|---|
^ | 表示匹配首行的文本 (以谁开始) |
$ | 表示匹配行尾的文本 (以谁结束) |
2.3.2 []方括号(表示匹配其中的任一字符,多选一)
2.3.3 量词符
量词符用来设定某个模式出现的次数。
量词 | 说明 |
---|---|
* | 出现0次或更多次 |
+ | 出现1次或更多次 |
? | 出现0次或1次 |
{n} | 出现n次 |
{n,} | 出现n次或更多次 |
{n,m} | 出现n到m次 |
2.3.4 元字符类
预定义类指的是某些常见模式的简写方式
元字符 | 说明 |
---|---|
\d | 匹配数字,任意ASCLL数字, 等价于[0-9]匹配一个数字 |
\D | 匹配任意非数字的字符 |
\w | 匹配字母或数字或下划线 |
\W | 匹配非数字或字母或下划线 |
\s | 匹配任意空白符[/t/r/n/v/f] |
\S | 匹配任意不是空白符的字符 |
. | 匹配除换行符和行结束符以外的任意单个字符 |
| | 或者 |
\. | 将特殊字符转义成(.)当成普通字符 |
2.3.5 案例
用户名:
/^[a-zA-Z0-9_]Z{5,20}$/ 任意数字字母下划线5-20位
验证手机号:
/^1[3|4|5|7|8]\d{9}$/ 1开头,第二位为中括号中的一个,再跟9位数字
验证邮箱:
/\w+@\w+\.\w+(\.\w+)?/ 数字字母下划线+@+数字字母下划线+.+数字字母下划线+(有也可以没有.+数字字母下划线)
三、方法
3.1 正则提取 match()
var str = "123123@qq.com,ziyuanyihe@163.cn 87666444@qq.com englishtown.com 222669312@qq.com...";
var array = str.match(/\w+@\w+\.\w+(\.\w+)?/g);
console.log(array);
返回一个数组 将对应的数据放入数组
3.2 正则替换 replace()
var str = "abc,efg,123,abc,123,a";
console.log(str.replace(/,|,/g, '.'));
将所有匹配的数据替换为后一个参数
3.3 检测是否符合正则规则 test()
var reg= /123/;
console.log(reg.test(123)); 匹配字符中是否出现123 出现结果为true否则为false
3.4 检索字符串 exec()
var str1 = 'abc abi hht yyo Abk';
var reg2 = /ab/gi;
console.log(reg2.exec(str1));
lastIndex:正则表达式的下一次查找的开始的下标,可以进行读取和修改