js正则表达式
记录一下正则表达式的使用
创建正则表达式
使用RegExp对象来创建正则表达式
1 | var rg = new RegExp(/123/); |
也可以使用字面量来创建正则表达式
1 | var rg = /123/ |
测试正则表达式
使用方法是 regexObj.test(str)
1 | var rg = /123/ |
正则表达式中的特殊字符
边界符
边界符 | 说明 |
---|---|
^ | 表示匹配行首的文本(以谁开始) |
$ | 匹配以谁结束 |
比如:
1 | var rg = /abc/; //表示含有abc |
字符类
使用 []
表示一系列字符可供选择,比如: /[abc]/
表示只要有a或者有b或者有c都能匹配。比如: /^[abc]$/
只能匹配a或者b或者c。
在方括号里使用 [-]
表示范围,比如 /[a-z]/
表示只要有26个字母都能匹配
还可以进行字符组合:/^[a-z0-9A-Z_-]$/
这样只要是a到z或者0到9或者A到Z或者_或者-开头和结尾都能匹配。
在方括号里面加 ^
表示取反的意思,比如:/[^0-9a-z]/
表示的是不能取0-9和a-z。
量词符
*
重复0次或者很多次+
重复1次或者很多次?
出现0次或者1次{3}
重复三次{3,}
大于等于三次{3,16}
大于等于3并且小于等于16次1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24var rg1 = /^a*$/;
console.log(rg1.test('')); //true
console.log(rg1.test('a')); //true
console.log(rg1.test('aaa')); //true
var rg2 = /^a+$/;
console.log(rg2.test('')); //false
console.log(rg2.test('a')); //true
var rg3 = /^a?$/;
console.log(rg3.test('aa')); //false
var rg4 = /^a{3}$/;
console.log(rg4.test('aa')); //false
console.log(rg4.test('aaa')); //true
var rg5 = /^a{2,}$/;
console.log(rg5.test('aa')); //true
console.log(rg5.test('a')); //false
var rg6 = /^a{2,3}$/;
console.log(rg6.test('a')); //false
console.log(rg6.test('aa')); //true
console.log(rg6.test('aaaa')); //false
括号总结
- 中括号 字符组合:匹配括号中的任意字符
- 大括号 量词符:表示重复次数
- 小括号 表示优先级
1
2
3
4
5var reg = /^abc{3}$/ //表示c重复三次 匹配 abccc
reg = /^(abc){3}$/ //表示abc重复三次 匹配 abcabcabc
reg = //
预定义类
预定义类指某些常见模式的简写方式
预定义类 | 说明 |
---|---|
\d | 匹配0-9之间的任意数字,相当于[0-9] |
\D | 匹配0-9以为的字符,相当于[^0-9] |
\w | 匹配任意字母、数字和下划线,相当于[A-Za-z0-9_] |
\W | 匹配任意字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_] |
\s | 匹配空格(包括换行符、制表符),相当于[\t\r\n\v\f] |
\S | 匹配非空格的字符,相当于[^\t\r\n\v\f] |
1 | var reg = /\d/; |
正则替换
使用 replace
方法可以替换字符串,替换方法可以使用正则表达式
1 | var str = 'angel和alex'; |
可以看到只替换了第一个a,没有替换掉后面的,这时候就需要使用到匹配模式了。
/regexp/[switch]
switch(修饰符)可以选择按照什么模式来匹配,有三个值:
- g: 全局模式
- i: 忽略大小写
- gi: 全局加忽略大小写
1 | var str = 'angel和alex'; |