正则表达式 Regular Expression ( 简称:RegExp)
功能:制定输入内容的规则,描述字符串的匹配方式,即用户输入的内容是否符合要求
创建正则表达式
1.构造函数:new RegExp(规则);
let str = "123a";
let re = new RegExp(/a/, "g");
console.log(re.test(str));//true
2.字面量: /规则/
let str = "123a"
let re = /a/g;
console.log(re.test(str));//trueq
match test
match 是字符串的方法,返回满足条件的内容
test 是正则的方法,返回字符串是否满足条件
即match返回数据,test返回Boolean值
let str = "vrf4ter43"
let re = /3/;
// match 是字符串的方法,返回满足条件的内容
// test 是正则的方法,返回字符串是否满足条件
// 即match返回数据,test返回Boolean值
console.log(str.match(re));//3
console.log(re.test(str));//true
//g全局查找
//不加g,只找第一个满足条件的内容,就不会继续匹配了
re = /4/g;
console.log(str.match(re));//[ '4', '4']
//正则默认情况下大小写敏感(区分大小写)
//加i,则实现不区分大小写
re = /R/ig;
console.log(str.match(re));//[ 'r', 'r']
g: global 全局
g全局查找
不加g,只找第一个满足条件的内容,就不会继续匹配了
re = /4/g;
console.log(str.match(re));//[ '4', '4']
i: insensitive 不区分大小写
正则默认情况下大小写敏感(区分大小写)
加i,则实现不区分大小写
re = /R/ig;
console.log(str.match(re));//[ 'r', 'r']
m: multiline 多行匹配
正则默认值,只匹配一行的内容
m可以实现进行多行匹配
let str = "123a\n1abc";
let re = /^1/img;//^1,第一位是不是1
console.log(str.match(re));//[ '1', '1' ]
以XXX开始
书写格式:^条件
let str = "123a1abc";
let re = /^1/img;
console.log(str.match(re));//[ '1' ]
以XXX结束
书写格式:条件$
re = /c$/img;
console.log(str.match(re));//[ 'c' ]
按位比较 []
中括号(代表按位比较,只要满足中括号里的任何一个值,都为真
let str = "123abdcabdc";
let re = /[a1b]/img;
console.log(str.match(re));//[ '1', 'a', 'b', 'a', 'b' ]
实现 手机号正则
let str1="13456789102"
let re1=/^[1][3-9][0-9]{9}$/g;
console.log(re1.test(str1));//true
console.log(str1.match(re1))
// 以a到z开头
re1=/^[a-z]i/;
console.log(str1.match(re1))
量词
let str1 = "13899997777"
let re1 = /[9]{4}/g;
console.log(str1.match(re1));//[ '9999' ]
re1 = /[0-9]{4}/g;
console.log(str1.match(re1));//[ '1389', '9997' ]
// {匹配的最少个数,匹配的最多个数}
// 注:默认是贪婪匹配
// 先匹配最多的,不满足后最多个数减1
// 一直减到最少个数,不再匹配
// 即:最少到最多之间的个数,先匹配最大的
// 不满足减1,直到小于最少的个数后不再匹配
re1 = /[0-9]{2,4}/g;
console.log(str1.match(re1));//[ '1389', '9997', '777' ]
【扩展】
let str = "122333a444455555666666";
// {n,} n到无穷
let re = /[0-9]{2,}/g;
console.log(str.match(re));
// {0,} 0到无穷(会取到一个或多个空字符串)
re = /[0-9]{0,}/g;
console.log(str.match(re));
// {0,1}
re = /[0-9]{0,1}/g;
console.log(str.match(re));
// (n?=m)选中n (条件是后面为m)
re = /[0-9](?=a)/g;
console.log(str.match(re));//[ '3' ]
// (n?!m)选中n (条件是后面不为m)
str ="3a6b7a8";
re = /[0-9](?!a)/g;
console.log(str.match(re));//[ '6', '8' ]
元字符
元字符 | 代表 |
---|---|
\d | [0-9] |
\D | 非[0-9] |
\w | [a-z 0-9 _] |
\W | 非[a-z 0-9 _] |
\s | 空白字符(空格,回车等) |
\S | 非空白字符 |