7.正则表达式
7.1 基本方法&语法
7.1.1 创建正则表达式
var reg = new RegExp("a");
- 使用字面量创建正则表达式
语法: var 变量 = /正则表达式/匹配模式
-
Test()方法
可以用来检查一个字符串是否符合正则表达式
符合返回true,否则返回flase
不区分大小写
var reg = /A/i; //不区分大小写
7.1.2包含,或,除了
reg = /a | b/; //查找是否有a或b
[ ]里面的也是或的关系
[ab] == [a|b]
[a-z] 任意小写字母
[A-Z] 任意大写字母
[A-z] 任意字母
[0-9] 任意数字
// 检查一个字符串中是否含有abc 或 adc 或aec
reg = /a[bde]c/;
查找任何不在方括号之间的字符。
[^ ] 除了什么
reg = /[^0-9]/;
var result = reg.test("09"); //false
匹配模式:
i:忽略大小写
g:全局匹配模式(默认为1次)
7.1.3量词
通过量词可以设置一个内容出现的次数
只对它前面的一个内容起作用,多个字符就要用括号圈起来
| 语法 | 描述 |
|---|---|
| {n} | 正好出现n次 |
| {m,n} | 出现m-n次 |
| {m,} | 出现m次或m次以上(至少出现m次) |
| + | 至少一个,相当于{1,} |
| * | 0个或多个,有没有都行,相当于{0,} |
| ? | 0个或1个,相当于{0,1} |
| 表示开头,^a 表示a开头 | |
| $ | 表示结尾, a$ 表示a结尾 |
// 检查一个字符串是否是一个合法的手机号
var reg = /^1[3-9][0-9]{9}$/;
var result = reg.test("18273445678");
7.1.4元符号
| 语法 | 描述 |
|---|---|
| . | 表示任意单个任意字符 |
| \w | 任意字母,数字,“_” |
| \W | 除了字母,数字,“_” |
| \d | 任意的数字 //digital |
| \D | 除了数字 |
| \s | 空格 //space |
| \S | 除了空格 |
| \b | 单词边界 |
| \B | 除了单词边界 |
检查特殊字符可以使用反斜杠转义
去除两边的空格
var str = " ad min ";
str = str.replace(/^\s* | \s*$/g, "");
7.2 字符串与正则相关的方法
7.2.1 split()方法 分割
// 使用正则表达式按任意字母拆分字符串
var str = "1q2w3e4r5t6y7";
var result = str.split(/[A-z]/);
这个方法不指定全局匹配,也会都拆分了
7.2.2 search()方法 搜索
和indexOf()差不多,不同的是它可以传正则表达式
var str2 = "hello abc adc dwq afc aec";
var result = str2.search(/a[def]c/);
search()不能全局匹配
7.2.3 match()方法 提取
根据正则表达式,从一个字符串中将符合条件的内容提取出来
默认情况下,match只会找到第一个匹配的内容,找到后就停止检索
我们可以设置正则表达式为全局匹配模式,这样就会匹配所有内容
可以为一个正则表达式设置多个匹配模式,且顺序无所谓
match会将结果封装到一个数组中
// 使用正则表达式将字符串中的所有字母提取出来
var str = "1q2w3e4r5t6y7A8B0C9";
var result = str.match(/[a-z]/ig);
7.2.4 replace()方法 替换
可以将字符串中指定的内容替换成新的内容
参数:
- 被替换的内容,可以接收一个正则表达式作为参数
- 新的内容,可以是空串
默认只会替换第一个,也可以使用全局匹配模式
// 使用正则表达式将字符串中的所有字母替换
var str = "1q2w3e4r5t6y7A8B0C9";
var result = str.replace(/[a-z]/ig, "_");