正則表達式
與以前相比的一些修改
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