1 什么叫正则表达式
一个表达式,以特定的规则来匹配字符串
也叫规则表达式
作用:
用来验证特定的字符串
如何使用正则表达式
2.1 构造函数的方式
new RegExp(pattern,[flag])
patten : 正则表达式,可选
flag : 匹配模式,可选
//匹配某个字符串中出现一次a
//可匹配:"456a" "aabb" "bac"
var reg = new RegExp(/a/);
匹配模式可选以下几种:
g 全局匹配 把字符串中所有符合条件的字符都匹配一次
i 忽略大小写
m 多行匹配 可以让正则多行匹配
u Unicode。把模式当作Unicode代码点(code points)的序列
//可以匹配: "A" "aAa"
var reg = new RegExp(/a/,i);
细节:
第一个参数的表达式是没有双引号的,第二个是有双引号或者单引号的
2.2 字面量的方式
语法:
/匹配规则/
例如:
/a/
匹配字符串任意位置出现小写字母a
test方法
最常用
语法:
RegExpObj.test(string)
例如:
//匹配字符串中出出现连续的三个小写a
var reg = new RegExp(/a{3}/);
console.log(reg.test("aaac")); //true
console.log(reg.test("baaab"));//true
console.log(reg.test("aa"));//false
console.log(reg.test("AAA"));//false
返回值:布尔类型,表示是否匹配成功
match方法
语法
string.match(regexp)
返回值
数组,数组里包含匹配结果
若是没有匹配的结果则返回null
例子:
//匹配字符串中是否包含连续的三个小写a
console.log("aaabcdefaaaghjiy".match(/a{3}/));
结果:
["aaa", index: 0, input: "aaabcdefaaaghjiy"]
exec方法
语法:
regObj.exec(string)
作用、返回值等和match是一样的
3 正则表达式中的元字符
元字符
. 匹配除了 以为的任意单个字符
转义字符 -- 将某些已经具有特殊作用的字符变成普通字符
| 或者 -- 前后的字符或者表达式出现之中一个
() 提升优先级和分组 --- 一般分组用的比较多
量词
? 0次或1次 {0,1}
+ 1次或多次 {1,}
* 0次或多次 {0,}
{n} 出现n次
{n,} 至少出现n次
{n,m} 出现n次到m次
边界
^ 开始 -- 以^后面的字符或者表达式开头 -- 严格匹配
$ 结尾 -- 必须以$前面的字符或者表达式结束 -- 严格匹配
范围 -- 使用短横线连接上限和下限,表示一个范围,也可以是多个字符组成的集合
[0-9] 表示数字
[a-z] 表示小写字母
[0-9a-zA-Z] 字母+数字
[abcABC] 多个字符组成的集合
[^0-9] 非数字
[^a-zA-Z] 非字母
预定义类
d [0-9] 数字字符
D [^0-9] 非数字字符
s [f v] 空白字符
S [^f v] 非空白字符
w [a-zA-Z0-9_] 单词字符(所有的字母和数字)
W [^a-zA-Z0-9_] 非单词字符