正则表达式的组成
由普通字符(例如字符a~z)以及特殊字符(称为元字符)组成
字符:任何一个字符都可以作为正则表达式的字符
[abc] 表示一个字符 a或者b或者c
[a-z] 表示所有的小写
[A-Z] 表示所有大写
[0-9] 表示所有数字
[^0-9] 表示除数字所有字符
[a-c] 表示h到m之间所有小写字母
[a-zA-Z_0-9] 表示单词字符[小写字母 大写字母 _ 数字]
预定义字符
. 任意一个字符
\w 匹配字母、数字、下划线
\W 匹配非字母、数字、下划线
\d 匹配一个数字字符
\D 匹配一个非数字字符
\s 匹配任何空白字符
\S 匹配任何非空白字符
修饰词
g 全局匹配
i 忽略大小写
数量词的使用
[a]{n} 表示a出现n次
[a]{n,} 表示n次以上
[a]{n,m} 表示最少出现n次,最多出现m次
[a]? 表示出现0次或者1次
[a]+ 表示出现1次或者多次
[a]* 表示出现0次或者多次
贪婪性数量词和懒惰性数量词
贪婪性数量词: JavaScript默认添加
懒惰性数量词
{n,}? 表示数量是n次即以上,但尽可能少
?? 数量是0次,但尽可能少
边界词的使用
^1 表示开头必须为1
1$ 表示必须已1结尾
\babc\b 表示获取abc这个单词
分组及分组的捕获
使用()来对正则表达式进行分组,整个表达式默认是一个分组,每个分组都有一个下标,下标从0开始
分组捕获格式:
(\w)\下标 表示括号里的值是什么,\下标 就表示什么
断言的使用
(?<=exp)正则表达式 匹配一个正则表达式,左边必须满足断言的条件
let str="LD:12345664122 QQ:654645645";
let e=/(?<=LD:)\d{11}/;
console.log(str.match(e));
正则表达式(?=exp) 匹配一个正则表达式,右边必须满足断言的条件
let str="LD:12345664122QQ:654645645";
let e=/\d{9}(?=QQ:)/;
console.log(str.match(e));
(?<!exp)正则表达式 匹配一个正则表达式,左边不满足断言的条件
let str="LD:12345664122QQ:654645645";
let e=/(?<!LD:)\d{9}/;
console.log(str.match(e));
正则表达式(?!exp) 匹配一个正则表达式,右边不满足断言的条件
let str="654645645LD:12345664122QQ:654645645";
let e=/\d{9}(?!QQ:)/;
console.log(str.match(e));