正则表达式
pattern:规则表示对字符串匹配得规则,换句话说 你要匹配什么字
modifiers:模式 匹配得范围 换句话说 在哪里匹配字符 请看下面列子
var regxp = new RegExp( /'d'/l );
console.dir(regxp);
1: var str = 'hellow,wordeee'; // 表示待匹配字符
全局匹配e字符
var reg = /e/g; //正则表达式,指定匹配字符的规则
2 test() 验证某个字符中是否存在匹配字符 返回 true false
var res = reg.test(str)
正则与api
var str = 'hellow,worreeee';
var reg = /e/g;
var res = str.match(reg);
console.log(res)
var str = 'hellow,worreeee';
var reg = /e/g;
var str1 =str.replace(reg,'鱼皮怪')
console.log(str1);
修饰符:
var str = 'hellow,hjajsjn';
// g 表示全局匹配 ,匹配0到多个结果
var reg = /e/g;
// 匹配大小写字符
var reg1=/e/i;
var reg2 = /e/ig;
//ig 表示全局匹配忽略大小写
//m 表示多行匹配
console.log(str.match(reg));
元字符与原驿字符:
元字符:看不懂
[] {} () + * . \d
var res ='aeeeeeeeeeeeaeaeeaeaaeeae';
// [] 中内容:匹配字符或者 为 或
// 或 默认匹配字符为1个字符
var reg = /[eanc]/g;
console.log(res.match(reg));
//匹配 abc 个任意字符的英文字符
// a 或 b 或 c
var reg1 = /[abc]/g
//匹配 26 个任意的英文字符
var reg2 =/[a-z]/
忽略分组:
断言
正向前言:
负向前言:
断言:当patten{规则} 匹配到结果后,应当看看左或者右字符是否满足断言。满足就匹配 不满足就不匹配
请看下面列题:
1:var reg = /\w(?=\d)/g
var str = 'aa'; //null 当前匹配的字符不满足断言,所以不匹配
console.log(str.match(reg));
2:var reg = /\w(?=\d)/g
var str1 = 'aa12'
//真正匹配字符的是\w,匹配结果也是由于\w决定
//断言,看的是被匹配旁边得字符是否满足条件,不是看被匹配得自身
console.log(str1.match(reg));
var str1 = 'aann123'
var reg2=/(?=\d)\w/
console.log(str1.match(reg2));
3:// 需求 要想匹配除 regex 和 regular 之外的 re
// 1找特点 : 右边都是 g
// 2只要匹配到re 右边字符不是g
var str ='regex represents regular expression'
var reg =/re(?!g)/g
console.log(str.match(reg));
4:需求 匹配除了 开头的re
var str ='regex represents regular expression'
var reg =/(?<=\w)re/g
console.log(str.match(reg));
5:匹配开头的re
var str ='regex represents regular expression'
console.log(str.match(/\bre/g));
断言: if中条件句也是断言 正则也是断言,对预留位置为止进行判断
1:var reg5 = /a(?=b)/ //a紧跟着b 匹配a跟随b ---->满足ab匹配结果是a
// var reg6 =/(?=b)a/ <----禁止这么写
2: var reg7 = /a(?!b)/
// 匹配不被跟随的a
// 不满足的字符 ab
// 满足的字符 ac
// 匹配的结果 a
3: var reg8 = /(?<=b)a/
// 只匹配b后面的a
// 满足的ba
// 匹配的a
4: var reg9 = /(?<=b)a(?=c)d/
//(?<=b) 断言的是a字符
//(?=c) 断言的是a字符
// d字符没有断言