ES项目学习笔记(四)正则的扩展

RegExp构造函数

写正则时基本上都是直接以//定义了,不看还差点忘了有个构造函数RegExp,这个构造参数有两种用法,一种是直接传入正则表达式,一种是传入两个字符串参数的,es6中扩展多了一种传参情况。

{
    //es5之前3种相同的定义一个正则的方式
    let regex_old = /xyz/i;
    let regex_old1 = new RegExp(/xyz/i);    
    let regex_old2 = new RegExp('xyz','i');

    //es6 在传入一个正则表达式还可以传入一个参数表示修饰符,会覆盖正则表达式中的修饰符
    let regex_new = new RegExp(/xyz/ig,'i');
    console.log(new RegExp(/xyz/ig).flags); //gi
    console.log(new RegExp(/xyz/ig,'i').flags); //i
}

u 修饰符

扩展该修饰符主要是用来正确处理大于\uFFFF的 Unicode 字符。用以更正以下正则表达式的行为:

  • 点字符

点(.)字符不能识别码点大于0xFFFF的Unicode字符,必须加上u修饰符。

let s = '𠮷';
点(.)字符在正则表达式中,含义是除了换行符以外的任意单个字符
{
    console.log('大于0xFFFF的Unicode字符',/^.$/.test(s)); // false
    console.log('使用u字符',/^.$/u.test(s)); // true
}
  • Unicode 字符表示

es6使用{}表示一個 Unicode 字符,如果在正则中使用必须要加上u修饰符,否则会被解读为量词
{
console.log(/\u{61}/.test('a')); // false
console.log(/\u{61}/u.test('a')); // true
console.log(/\u{20BB7}/u.test('𠮷')); // true
}

  • 量词

使用u修饰符后,所有量词都会正确识别大于码点大于0xFFFF的Unicode字符。

{
    console.log('量词',/a{2}/.test('aa')); // true
    console.log('量词',/a{2}/u.test('aa')); // true
    console.log('量词',/𠮷{2}/.test('𠮷𠮷')); // false
    console.log('量词',/𠮷{2}/u.test('𠮷𠮷')); // true
}
  • 预定义模式

\S匹配所有非空白字符。

{
    /^\S$/.test('𠮷') // false
    /^\S$/u.test('𠮷') // true
}
  • i 修饰符

\u004B与\u212A都是大写的K。不加u修饰符,就无法识别非规范的K字符。

/[a-z]/i.test('\u212A') // false
/[a-z]/iu.test('\u212A') // true
  • 转义

没有u修饰符的情况下,正则中没有定义的转义(如逗号的转义,)无效,而在u模式会报错。

/\,/ // /\,/
/\,/u // 报错

y 修饰符

let s = 'bbbb_bbb_bb_b';
var a1 = /b+/g;
var a2 = /b+/y;

console.log(a1.exec(s), a2.exec(s)); // ["bbbb"],["bbbb"]
console.log(a1.exec(s), a2.exec(s)); // ["bbb"],null

console.log(a1.sticky, a2.sticky); //表示是否开启了粘连模式

在看这一部分内容时发现对正则的掌握程度真的很差,导致很多内容都都是新的,待后面对正则再进行系统的学习后,再补充。先记录到此。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容

  • 我是一个善变的人,很多事情会有很多想法,不知道怎样才能改掉这个毛病,马上三十岁了,我想做个全新的自己,就必须要改变!
    v雪姑娘阅读 125评论 0 0
  • 简单爱,全能福,让你随心所欲的扫福!2019年1月29日书写,祝愿每一个看到饱满福的人福气旺旺!
    止儿徐子阅读 1,466评论 15 42
  • 盯着手机屏的时间必须减少,除非学习,如果是为了其它,只能有一个小时,真受不了天天玩手机的自己了
    乘风而归阅读 163评论 0 0
  • 压缩文件的用途与技术 压缩文件使文件大小减低,降低磁盘使用量。还可以分成数个小型文件,方便携带。常用于网络数据传输...
    taosilly阅读 1,357评论 0 1