正则表达式
与以前相比的一些修改
new RegExp(/xxx/ , y);
var reg = new RegExp(/abc/ig, 'i');
console.log(reg.test('jsabc')); //true
console.log(reg.test('jasbc')); // false
新增 Symbol下的4种方法
查询方法[Symbol.match]
匹配字符串 如果没有找到返回null
,找到返回一个集合,第一个参数是的内容,第二个是找到的下标,第三个是全部的内容
var reg = new RegExp(/abc/ig, 'i');
console.log(reg[Symbol.match]('bcd')); // null
console.log(reg[Symbol.match]('dabcd')); // ["abc", index: 1, input: "dabcd"]
替换方法[Symbol.replace]匹配字符串 替换内容,替换字符串中第一处匹配的地方,第一个参数是要替换的字符串,第二个参数是要替换的内容。找到的话替换
var reg = new RegExp(/abc/ig, 'i');
console.log(reg[Symbol.replace]('bcd','js')); // bcd
console.log(reg[Symbol.replace]('dabcdabc','js')); // djsdabc
搜索[Symbol.search]匹配字符串 返回下标,搜索匹配字符串,如果找到就返回找到的下标,没找到返回-1
var reg = new RegExp(/abc/ig, 'i');
console.log(reg[Symbol.search]('bcd')); // -1
console.log(reg[Symbol.search]('dabcdabc')); // 1
切割[Symbol.split]匹配字符串 找到所有相关匹配的字符切割后返回数组,将整个字符串切割
var reg = new RegExp(/abc/ig, 'i');
console.log(reg[Symbol.split] // ["bcd"] ('bcd'));
console.log(reg[Symbol.split]('dabcdaca')); // ["d", "daca"]
u修饰符
Unicode模式 处理大于\uFFFF的Unicode字符
y修饰符
粘连修饰符的意思就是说当一次匹配完成后第二次匹配时相配的字符必须在首位在能匹配成功,不然就返回null。
如下面的例子,str第一次匹配成功后下标移动到第3个也就a的地方,再次匹配成功,但是str2的时候第三个变为了-这时在匹配abc就匹配不上了提现了粘连的特性。
var str = 'abcabc';
var str2 = 'abc-abc';
var reg = new RegExp(/abc/,'y'`);
console.log(reg.exec(str)) // ["abc", index: 0, input: "abcabc"]
console.log(reg.exec(str)) // ["abc", index: 3, input: "abcabc"]
console.log(reg.exec(str2)) // ["abc", index: 0, input: "abc-abc"]
console.log(reg.exec(str2)) // null
sticky属性
表示是否设置了y修饰符。
var str = 'abcabc';
var str2 = 'abc-abc';
var reg = new RegExp(/abc/,'y');
console.log(reg.sticky); // true
flags属性
返回的是修饰符。
var str = 'abcabc';
var str2 = 'abc-abc';
var reg = new RegExp(/abc/,'y');
console.log(reg.flags); // y
网友评论