ES6對正則做了哪些擴(kuò)展?

1俱笛、ES6 RegExp 構(gòu)造函數(shù)表示形式
在ES5 中,RegExp構(gòu)造函數(shù)的參數(shù)有兩種表示方式:

// 第一個(gè)參數(shù)為字符串足陨,第二個(gè)參數(shù)為修飾符
var regexp = new RegExp("yuan", "i");
console.log(regexp); // /yuan/i
// 參數(shù)是正則表達(dá)式
var regexp = new RegExp(/yuan/i);
console.log(regexp); // /yuan/i

在ES6中嫂粟,第一個(gè)參數(shù)可以是正則表達(dá)式,第二個(gè)參數(shù)是修飾符:

var regexp = new RegExp(/yuan/gi, "i");
console.log(regexp); // /yuan/i
console.log(regexp.flags); // i

從上面代碼可以看出墨缘,在ES6中星虹,第二個(gè)參數(shù)修飾改變了正則表示的flags 屬性。

2镊讼、字符串的正則方法
匹配目標(biāo)字符串:math()
表達(dá)式: regexpSymbol.math;
str: 是指匹配的目標(biāo)字符串
返回值:一個(gè)數(shù)組(包括整個(gè)匹配結(jié)果和通過捕獲組匹配到的結(jié)構(gòu))宽涌,如果沒有匹配值,這返回null蝶棋。

var reg = /a/g;
var str = "yuan is an animal";
result = reg[Symbol.match](str);
console.log(result); //  ["a", "a", "a", "a"]

這個(gè)方法是在String.prototype.match() 的內(nèi)部調(diào)用卸亮,等同于下面返回的結(jié)果。

console.log("yuan is an animal".match(/a/g)); //  ["a", "a", "a", "a"]

這兩方法不同之處在于this 和 參數(shù)順序玩裙。

替換字符串: replace()
表達(dá)式:regexp[Symbol.replace](str, newSubStr | function)
str:正則替換的目標(biāo)字符串兼贸;
newSubStr:替換的字符串;
function:生成新的子字符串的回調(diào)函數(shù)替換器吃溅。
返回值:替換后的新字符串溶诞。

var reg = /-/g;
var str = "2017-12-28";
result = reg[Symbol.replace](str, '.');
console.log(result); // 2017.12.28

這個(gè)方法是在String.prototype.replace() 的內(nèi)部調(diào)用,等同于下面返回的結(jié)果决侈。

console.log("yuan is an animal".replace(/\s/g, ",")); // yuan,is,an,animal

這兩方法不同之處在于this 和 參數(shù)順序螺垢。

搜索目標(biāo)字符串:search()
表達(dá)式:regexpSymbol.search;
str:搜索的目標(biāo)字符串;
返回值: 返回的是第一個(gè)匹配項(xiàng)在目標(biāo)字符串的位置索引赖歌,若查詢不到則返回 -1枉圃;

var reg = /a/g;
var str = "yuan is an animal";
result = reg[Symbol.search](str);
console.log(result); //  2

這個(gè)方法是在String.prototype.search() 的內(nèi)部調(diào)用的,與下面輸出的結(jié)構(gòu)相同庐冯;

var reg = /a/g;
var str = "yuan is an animal";
res = str.search(reg);
console.log(res); // 2

這兩方法不同之處在于this 和 參數(shù)順序孽亲。

切割字符串:split()
表達(dá)式:regexp[Symbol.split](str[, limit])
str:切割操作的目標(biāo)字符串;
limit:可選展父,限制切割數(shù)量墨林,為整型值赁酝;
返回值:切割后的字符串?dāng)?shù)組。

var reg = /-/g;
var str = "2017-12-28";
result = reg[Symbol.split](str);
console.log(result); //  ["2017", "12", "28"]
result2 = reg[Symbol.split](str, 2);
console.log(result2); // ["2017", "12"]

這個(gè)方法是在String.prototype.split() 的內(nèi)部調(diào)用的旭等,與下面輸出的結(jié)構(gòu)相同;

var reg = /-/g;
var str = "2017-12-28";
res = str.split(reg);
console.log(res); //  ["2017", "12", "28"]

這兩方法不同之處在于this 和 參數(shù)順序衡载。

3搔耕、u 修飾符
前面章節(jié)說過,ES5中不能處理4字節(jié)的utf-16 編碼痰娱。u 修飾符的出現(xiàn)就是為了處理這種情況弃榨。

var regex = new RegExp('\u{61}', 'u');
console.log(regex.unicode); // true

4、y 修飾符
sticky 的值是 Boolean 梨睁,并在“y”標(biāo)志使用時(shí)為真; 否則為假鲸睛。"y" 標(biāo)志指示,僅從正則表達(dá)式的 lastIndex 屬性表示的索引處為目標(biāo)字符串匹配(并且不會(huì)嘗試從后續(xù)索引匹配)坡贺。

var regex = /^foo/y;
regex.lastIndex = 2;
regex.test("..foo");   // false - 索引2不是字符串的開始

var regex2 = /^foo/my;
regex2.lastIndex = 2;
regex2.test("..foo");  // false - 索引2不是字符串或行的開始
regex2.lastIndex = 2;
regex2.test(".\nfoo"); // true - 索引2是行的開始

戳我博客

章節(jié)目錄

1官辈、ES6中啥是塊級作用域?運(yùn)用在哪些地方遍坟?
2拳亿、ES6中使用解構(gòu)賦值能帶給我們什么?
3愿伴、ES6字符串?dāng)U展增加了哪些肺魁?
4、ES6對正則做了哪些擴(kuò)展隔节?
5鹅经、ES6數(shù)值多了哪些擴(kuò)展?
6怎诫、ES6函數(shù)擴(kuò)展(箭頭函數(shù))
7瘾晃、ES6 數(shù)組給我們帶來哪些操作便利?
8刽虹、ES6 對象擴(kuò)展
9酗捌、Symbol 數(shù)據(jù)類型在 ES6 中起什么作用?
10涌哲、Map 和 Set 兩數(shù)據(jù)結(jié)構(gòu)在ES6的作用
11胖缤、ES6 中的Proxy 和 Reflect 到底是什么鬼?
12阀圾、從 Promise 開始踏入異步操作之旅
13哪廓、ES6 迭代器(Iterator)和 for...of循環(huán)使用方法
14、ES6 異步進(jìn)階第二步:Generator 函數(shù)
15初烘、JavaScript 異步操作進(jìn)階第三步:async 函數(shù)
16涡真、ES6 構(gòu)造函數(shù)語法糖:class 類

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末分俯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子哆料,更是在濱河造成了極大的恐慌缸剪,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件东亦,死亡現(xiàn)場離奇詭異杏节,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)典阵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門奋渔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人壮啊,你說我怎么就攤上這事嫉鲸。” “怎么了歹啼?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵玄渗,是天一觀的道長。 經(jīng)常有香客問我染突,道長捻爷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任份企,我火速辦了婚禮也榄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘司志。我一直安慰自己甜紫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布骂远。 她就那樣靜靜地躺著囚霸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪激才。 梳的紋絲不亂的頭發(fā)上拓型,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音瘸恼,去河邊找鬼劣挫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛东帅,可吹牛的內(nèi)容都是我干的压固。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼靠闭,長吁一口氣:“原來是場噩夢啊……” “哼帐我!你這毒婦竟也來了坎炼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拦键,失蹤者是張志新(化名)和其女友劉穎谣光,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矿咕,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抢肛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碳柱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熬芜,死狀恐怖莲镣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涎拉,我是刑警寧澤瑞侮,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站鼓拧,受9級特大地震影響半火,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜季俩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一钮糖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酌住,春花似錦店归、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至都哭,卻和暖如春秩伞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欺矫。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工纱新, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人汇陆。 一個(gè)月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓怒炸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親毡代。 傳聞我的和親對象是個(gè)殘疾皇子阅羹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容