ES6-----学习系列三(正则扩展)

一、es6在正则方面主要是增加了一些新的方法及一些修饰符,下面一一列出

  

// 字符串对象的4个使用正则表达式的方法: match(),replace(),search(),split()这四个方法全部调用RegExp的实例的方法。

{
    let regex = new RegExp(‘xyz‘, ‘ig‘);
    console.log(regex.test(‘xyz0XYZ1xyz2‘), regex.exec(‘xyz0XYZ1xyz2‘));
}

  ①构造函数不同

{
    // #构造函数#
    let regex = new RegExp(‘xyz‘, ‘i‘); //第一个参数是字符串,第二个是修饰符
    let regex2 = new RegExp(/xyz/i); //第一个参数是正则表达式,不接受第二个参数,否则会报错
    console.log(regex.test(‘xyz123‘), regex2.test(‘xyz123‘));
    console.log(regex.test(‘xyZ123‘), regex2.test(‘xyZ123‘));  
  //es6中可以接受第二个参数,第二个会覆盖第一个修饰符
    let regex3 = new RegExp(/abc/ig, ‘i‘);
    console.log(regex3.flags); //原有正则对象的修饰符是ig,它会被第二个参数i覆盖

}

  ②新增修饰符

    y修饰符(也g一样也是全局匹配,g不强调下一次匹配的位置,而y必须是下一次匹配的第一个字符)    

{
    // 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); //表示是否开启了粘连模式(是否开启y) 输出false true
}

    u修饰符(这个修饰符不知道啥用途,感觉实际工作不会用太多吧 ,了解一下就行了)

{
    console.log(‘u修饰符‘,/^\uD83D/.test(‘\uD83D\uDC2A‘)); // true
    console.log(‘u修饰符‘,/^\uD83D/u.test(‘\uD83D\uDC2A‘)); // false
    // 大括号表示Unicode字符,只有加上u才能识别
    console.log(/\u{61}/.test(‘a‘)); // false
    console.log(/\u{61}/u.test(‘a‘)); // true
    console.log(/\u{20BB7}/u.test(‘??‘)); // true
    // 点(.)字符不能识别码点大于0xFFFF的Unicode字符,必须加上u修饰符。
    let s = ‘??‘;
    console.log(‘大于0xFFFF的Unicode字符‘,/^.$/.test(s)); // false
    console.log(‘使用u字符‘,/^.$/u.test(s)); // 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
}

   补充其他

{
    // #正则表达式中,点(.)是一个特殊字符,代表任意的单个字符,但是行终止符(line terminator character)除外
    // U+000A 换行符(\n)
    // U+000D 回车符(\r)
    // U+2028 行分隔符(line separator)
    // U+2029 段分隔符(paragraph separator)
    // 只是一个提案目前还不支持
    // let reg=/test.go/s;
    // console.log(reg.test(‘test\ngo‘));
    // console.log(reg.test(‘test\ngo‘));
    console.log(‘s变通方法‘,/foo.bar/.test(‘foo\nbar‘));
    console.log(‘s变通方法‘,/foo[^]bar/.test(‘foo\nbar‘));
}
时间: 2024-11-05 12:23:46

ES6-----学习系列三(正则扩展)的相关文章

Identity Server4学习系列三

1.简介 在Identity Server4学习系列一和Identity Server4学习系列二之令牌(Token)的概念的基础上,了解了Identity Server4的由来,以及令牌的相关知识,本文开始实战,实现Identity Server4基本的功能. 2.前提 本文基于.Net Core2.1和Indetity Server4 2.3.0,令牌处理包采用IdentityServer4.AccessTokenValidation 2.7.0 3.实战一Identity Server4服

C# Redis学习系列三:Redis配置主从

Redis配置主从 主IP :端口      192.168.0.103 6666 从IP:端口       192.168.0.108 3333 配置从库 (1)安装服务: redis-server --service-install --service-name redisService6666 --port 6666 (2)启动进程: redis-server --service-start --service-name redisService6666 (3)连接redis:redis-

ES6学习笔记(二)——字符串扩展

相信很多人也和我一样,不喜欢这样循规蹈矩的逐条去学习语法,很枯燥乏味.主要是这样学完一遍之后,没过一段时间就忘到九霄云外了.不如实际用到的时候研究它记得牢靠,所以我就整理成笔记,加深记忆的同时便于复习查看. 在这样不断的学习过程中,也提高了自己的总结能力:) 1.字符串的遍历器接口 ES5,数组和对象可以进行遍历,使用for() 和 for...in,还有jq中的each()方法进行遍历. ES6为我们提供了字符串遍历器  for...of 循环遍历 优点:可以识别大于0xFFFF的码点,传统的

ES6 入门系列 - 函数的扩展

1函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello World 上面代码检查函数log的参数y有没有赋值,如果没有,则指定默认值为World.这种写法的

JavaScript学习笔记--ES6学习(五) 数值的扩展

ES6 对于数值类型 (Number) 进行了一下扩展: 1.对于二进制和八进制提供了新的写法 ES6对于二进制和八进制的数值提供了新的写法,分别用0b (或者0B) 和0o (或者0o) 表示.例如: 0b111110111 === 503 // true 0o767 === 503 //true 由于从ES5开始,严格模式中,八进制不再允许使用前缀0来表示,因此在ES6中进一步明确,要用0o来表示. 如果要将0b和0o前缀的字符串数值转换为十进制,要使用Number方法, 例如: var i

web多终端开发学习系列(三)--- 基于bootstrap的表格插件bootstrap-table

基于网页管理系统的开发大多数功能只是对数据的显示与操作,对于数据的显示一般都是通过table表格来显示,所以管理系统的开发很有必要引入表格插件,对于sencha touch等商业化框架,都有自己自带的表格控件,而对于bootstrap需要引入第三方的表格插件,这里我学习下bootstrap table. 介绍 bootstrap table是基于bootstrap框架的一个表格插件,官网地址是http://wenzhixin.net.cn/p/bootstrap-table/docs/index

NMock学习系列(三)--- NMock在DDD领域驱动的单元测试中的应用

介绍 领域驱动设计涵盖的知识点比较多,其中代码的架构.设计.编写基本上只占到其中的很小一部分,其它的大部分讲解的是需求的获取方式.项目的管理方式等知识.本篇就是针对这一小部分的知识点位来展开的.所以本篇的学习前提是只需要了解DDD的架构分层即可. 应用场景 DDD领域驱动设计中一旦领域驱动层模型建立完毕,就会产生出数据库持久化的接口即仓储的接口供其它层来做具体实现,所以要想建立领域层的单元测试,就必须实现这些仓储接口或者模拟出这些接口实现.我们可以采用NMock来进行模拟仓储的实现.下面开始学习

Vue学习系列(三)——基本指令

前言 在上一篇中,我们已经对组件有了更加进一步的认识,从组件的创建构造器到组件的组成,进而到组件的使用,.从组件的基本使用.组件属性,以及自定义事件实现父子通讯和巧妙运用插槽slot分发内容,进一步的认识到组件在Vue中的核心地位. 而今天,我们将对vue中的基本指令进行了解汇总,指令在Vue中是个很重要的功能,在Vue项目中是必不可少的.根据官网的介绍,指令 (Directives) 是带有 v- 前缀的特殊属性.指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM.

ES6入门系列三(特性总览下)

0.导言 最近从coffee切换到js,代码量一下子变大了不少,也多了些许陌生感.为了在JS代码中,更合理的使用ES6的新特性,特在此对ES6的特性做一个简单的总览. 1.模块(Module) --Chrome测试不可用 在ES6中,有class的概念,不过这只是语法糖,并没有解决模块化问题.Module功能则是为了解决模块化问题而提出的. 我们可以使用如下方式定义模块: 11_lib.js文件内容 // 导出属性和方法 export var PI = 3.1415926; export fun

MVC学习系列——Model验证扩展

MVC中,实现了前端后端的验证. 前端验证.步骤: web.config这两个得开启: <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> JS设置 第一步:引入页面js @Scripts.Render("~/bundles/jque