ES6 对正则表达式的扩展

文章目录

  • 修饰符 y
  • 修饰符 u

ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

修饰符 y

g 类似,也是全局匹配,并且下一次匹配都是从上一次匹配成功结束位置开始(即上次匹配成功的字符串最后一个字符后面的位置),不同之处在于,g 修饰符只要剩余位置中存在匹配即可;而 y 修饰符要求剩余位置的第 1 个位置必须匹配成功,否则匹配失败,不管后面有没有符合正则式的内容,直接返回 null

var s = "abc_ab_a";
var r1 = /[a-z]+/g;
var r2 = /[a-z]+/y;
console.log(r1.exec(s),r1.lastIndex); // ["abc", index: 0, input: "abc_ab_a"] 3
console.log(r2.exec(s),r2.lastIndex); // ["abc", index: 0, input: "abc_ab_a"] 3
console.log(r1.exec(s),r1.lastIndex); // ["ab", index: 4, input: "abc_ab_a"] 6
console.log(r2.exec(s),r2.lastIndex); // null 0

正则表达式 r2,第一次成功匹配到字符串 abc,这个 abc 后面的位置是 3,这个就是正则表达式成功匹配的字符串的结束位置,也就是下次迭代匹配开始的位置(即剩余位置的第 1 个位置)。我们看到位置 3 对应的字符是 _[a-z]+ 匹配失败了,那么就直接甩手不干了,直接返回 null,这脾气,暴躁!

修饰符 u

u 修饰符使得正则表达式可以正常匹配 4 个字节的字符。比如 “[emoji]” 字符是一个 4 字节字符,直接使用正则匹配将会失败,而使用 u 修饰符后,可以匹配成功,如下所示:

var s = "[emoji]";
console.log(/^.$/.test(s)); // false
console.log(/^.$/u.test(s)); // true

如上的代码中,. 表示匹配任意一个字符,除了换行符以外。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

transformer机制讲解_【核心代码解读】Transformer-XL

[论文] Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context​arxiv.orgMotivationTransformer在预训练阶段,设置了固定序列长度max_len的上下文,finetuning阶段,模型不能获取大于max_len的上下文依赖;Tran…

Neo4j导入:java.lang.IllegalStateException:不支持在单个导入中混合指定和未指定的组所有物...

休息片刻之后,我最近一直在使用Neo4j导入工具 ,并遇到了我最初不理解的有趣的错误消息。 我有一些CSV文件,其中包含要导入Neo4j的节点。 它们的内容如下所示: $ cat people_header.csv name:ID(Person)$ cat people.csv "…

Requests库实战(二)---破解百度翻译

功能:爬取到页面中翻译后的文本数据 获取请求地址和请求方式 先输入dog翻译一下,发现是Ajax请求(动态实时刷新页面),Ajax请求的数据包可以在网络的XHR中看到。找到输入dog的数据包,通过标头的表单数据kw:dog以及响应的结果就可以…

局部变量的赋值问题

int i 5; i 10;变量 i 在栈帧里面的局部变量表里面,这个局部变量表类似一个数组,里面包含了一些“槽位”来存放局部变量,i 这个变量,就是在局部变量表中的某一个槽位里面,并且 i 只会占用一个槽位,对变量…

php生成 sku_高并发下,php与redis实现的抢购、秒杀功能

抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存来处理抢购,…

lambda :: -_无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!

lambda :: ->如果你还没有注意到了,我最近被唠叨试图开始使用时,我遭遇了陷阱AWSλ-S3正式例子 。 虽然大多数这些愚蠢的错误的指责是对我自己的懒惰,过度自尊和缺乏对细节的关注,我个人觉得,在开始与一家领先的无服…

Requests库实战(三)---爬取豆瓣电影详细信息

完整代码 爬取豆瓣电影的详细信息 地址:豆瓣电影动画 向下滑动时新增的数据也是Ajax请求,原理和上一个项目是一样的。唯一的不同是此处请求url携带了多个参数 import requests import json header{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x6…

lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串

lineseparatorJDK 7在java.lang.System类上引入了一个名为lineSeparator()的新方法。 该方法不期待任何参数,并返回一个String ,它表示“取决于系统的行分隔符字符串。” 此方法的Javadoc文档还指出System.lineSeparator() “始终…

JavaScript(JS)中与正则表达式有关的方法介绍

文章目录RegExpRegExp 对象的属性compiletestexecString一共有 7 个与正则表达式式相关的方法,这些方法分别来自于 RegExp 与 String 对象。RegExp RegExp 对象表示正则表达式, 主要用于对字符串执行模式匹配. 语法: new RegExp(pattern[, flags]) 参数 pattern …

Requests库实战(四)---爬取肯德基餐厅地址信息

功能:爬取查询后的肯德基餐厅的地址信息 地址:http://www.kfc.com.cn/kfccda/storelist/index.aspx 亮点是post请求的参数有两组:查询字符串参数,表单数据。 对于post请求,由于url中隐藏了许多参数,所以引入了表单数据…

显示请求_学习记录:HTTP的响应与请求amp;Curl

本文包含四个部分,简要介绍HTTP请求、HTTP响应、chrome开发者查看、与CURL命令。Part1:HTTP请求1GET请求指定的页面信息,并返回实体主体。2HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。3POST向…

java.线程池 线程数_如何在线程“ main”中修复异常java.lang.NoClassDefFoundError:Java中的org / slf4j / LoggerFactory...

java.线程池 线程数此错误表示您的代码或您在应用程序中使用的任何外部库都在使用SLF4J库 (一个开放源代码日志记录库),但无法找到所需的JAR文件,例如slf4j-api-1.7.2.jar因此它是在线程“ main” java.lang.NoClassDefFoundError…

正则表达式实战---爬取多张图片

主要是分析网站图片的html源代码,来决定正则表达式如何写。 完整代码 #使用正则表达式爬取多张图片,亮点在于数据解析 #爬取网站:https://www.bilibili.com/read/cv11323037?fromsearch import requests import re import os image_pathimage if not …

JS(JavaScript) 使用捕获性分组处理文本模板,最终生成完整字符串

var tmp "An ${a} a ${b} keeps the ${c} away";// obj 是 json 对象 var obj {a:"apple",b:"day",c:"doctor" };/** *descript 声明定义一个函数 tmpl,该函数将文本模板对应的变量替换后返回 * */function tmpl(t,o){/*…

6 日期字符串转日期_Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类...

因为Jdk7及以前的日期时间类的不方便使用问题和线程安全问题等问题,2005年,Stephen Colebourne创建了Joda-Time库,作为替代的日期和时间API。Stephen向JCP提交了一个规范,他本人作为规范的领导人,该规范就是JSR 310&am…

第一个JDK 10(18.3)候选版本(内部版本43)展示了新的版本控制方案

Mark Reinhold的帖子“ JDK 10:First Release Candidate ”宣布“在build 43中没有未解决的P1错误”,并将Build 43命名为最初的JDK 10 Release Candidate 。 Reinhold帖子还指向“ JDK 10 Early Access Builds ”页面,该页面包含发行说明的链…

安装Pytorch如何选择CUDA的版本

安装Pytorch时CUDA的选择Nvidia CUDA查看CUDA版本方法查看CUDA的驱动API版本查看CUDA的运行API版本查看官方CUDA的运行API版本方法1方法2查看Anaconda里cudatoolkit包版本CUDA是一个并行计算平台和编程模型,能够使得使用GPU进行通用计算变得简单和优雅。Nvidia官方提…

MySQL的通配符

% 表示匹配任意数量(包含 0 个)的任意字符,跟 like 配合使用_ 下划线表示匹配任意 1 字符

db2 springboot 整合_[SpringBoot]快速配置多数据源(整合MyBatis)

前言由于业务需求,需要同时在SpringBoot中配置两套数据源(连接两个数据库),要求能做到service层在调用各数据库表的mapper时能够自动切换数据源,也就是mapper自动访问正确的数据库。本文内容:在SpringbootMybatis项目的基础上&…

pytorch使用GPU炼丹笔记

如何使用GPU训练/测试模型使用单GPU设置设备将数据转换成CUDA张量将模型参数转换成CUDA张量使用指定GPU1.使用CUDA_VISIBLE_DEVICES。1.1 直接在终端或shell脚本中设定:1.2 python代码中设定:2. 使用函数 set_device使用多GPUDP方法DDP方法需要先初始化数…