1.元字符
- . ^ :匹配字符串的开始
- . $: 匹配字符串的结束
// 匹配开始和结尾,字符串必须以w开头,以2结尾,中间是eb02
var reg = /^web02$/;
- . .:任意字符 .
- . \w: 字母、数字、下划线
- . \s :任意空白字符
- . \d:匹配数字,等同于[0-9]
- . \D:匹配非数字,等同于[^0-9]
- . |:或匹配,如 /x|y/ 正则可匹配x或y两个字符
- . [abc]: 表示 包含里面的任意一个
反义符
- . [^x] 匹配除“x”之外的所有字符,其中“x”可以为任意字符
- . [^xyz] 同上,匹配除“x、y、z”之外的任意字符
// .匹配任意字符
var reg1 = /^b..k$/; // 以b开头,以k结尾,中间有2个字符(任意)
var str1 = 'book'; //
var str2 = 'boook' //
// \w 匹配一个字符(数字,字母或下滑线的一种)
var reg2 = /^t\wq$/; // 以t开头,一个字(上面三种中的一个),以q结尾
var str1 = 't2q';
var str2 = 't2wq';
// \s空格
var reg = /java\sscript/;
var str = 'study java script'; //
var str = 'study javascript'; //
// \d匹配数字 \D非数字
var reg = /\Dook/;
var str = '8ook'; //
// | 或
var reg = /^1(3|4|5|6|7|8)\d\d\d\d\d\d\d\d\d$/;
var str1 = '18800000000';
var str2 = '12800000000'
// [abc] 代表一个字符,字符只能是abc中的一个
var reg = /^1[345678]\d\d\d\d\d\d\d\d\d$/;
var str1 = '18800000000'; //
var str2 = '12800000000'; //
var reg = /^[^xyz]...$/; //
var str = '1234'; //
var str = 'x234'; //
重复匹配
- . ? 重复出现零次或一次
- . + 重复出现一次或多次
- . * 重复出现零次或多次
- . {n} 重复出现n次
- . {n,} 至少重复出现n次
- . {m,n} 重复重现m到n次,其中,m<n
// ?0到1次,+1到多次,*0到多次
var reg = /^bo?k$/; // b开头,0个或者1个o,以k结尾
var str = 'bok';
var str = 'book';
var reg = /^bo+k$/; // b开头,1个或多个o,k结尾
var str = 'bok';
var str = 'booooooooook';
var reg = /^bo*k$/; //b开头,0个或多个o,k结尾
// {n}重复n次, {m,n} 最少重复m次,最多重复n次
var reg = /^bo{2}k$/; // 匹配book 2个o
var reg = /^1[3,4,5,6,7,8]\d{9}/;
分组
- . 用括号分组
- . 分组的应用
// 日期的匹配 2000-1-11 \1 对第一个括号的重复
var reg = /^\d{4}(\-|\.)\d{1,2}\1d{1,2}$/;
// 应用
var reg = /(.*)(程序员)(.*)/;
var str = '我是web前端程序员,我来自深圳';
console.log(reg.test(str)); //
// 将程序员替换成攻城狮
var newStr = str.replace(reg, '$1攻城狮$3');
console.log(newStr);
var phone = '15013795539';
var reg = /(\d{3})\d{4}(\d{4})/;
var newPhone = phone.replace(reg, '$1****$2');
console.log(newPhone);