当前位置: 首页 > news >正文

ES6 正则的扩展(十九)

1. 正则表达式字面量改进

特性:在 ES6 中,正则表达式字面量允许在字符串中使用斜杠(/)作为分隔符。
用法:简化正则表达式的书写。

const regex1 = /foo/;
const regex2 = /foo/g; // 全局搜索

2. u 修饰符(Unicode)

特性:u 修饰符允许正则表达式正确处理 Unicode 字符。
用法:确保正则表达式在处理多字节字符时表现正确。

const regex = /foo/u;
console.log(regex.test("foö")); // 输出:false

3. y 修饰符(Sticky)

特性:y 修饰符使正则表达式在搜索时“粘”在每个匹配的开始位置。
用法:进行连续的匹配搜索。

const text = "abcabc";
const regex = /abc/y;let match;
while ((match = regex.exec(text)) !== null) {console.log(`Found ${match[0]} at index ${match.index}`);
}
// 输出:
// Found abc at index 0
// Found abc at index 3

4. 新增的正则表达式方法

特性:String.prototype.match(), String.prototype.replace(), String.prototype.search(), 和 String.prototype.split() 现在可以接受正则表达式字面量。
用法:直接使用正则表达式进行字符串处理。

const text = "Hello World";
const regex = /Hello/;console.log(text.match(regex)); // 输出:["Hello"]
console.log(text.replace(regex, "Hi")); // 输出:"Hi World"
console.log(text.search(regex)); // 输出:0
console.log(text.split(regex)); // 输出:["", " World"]

5. flags 属性

特性:正则表达式对象现在有一个 flags 属性,返回正则表达式的修饰符。
用法:获取正则表达式使用的修饰符。

const regex = /foo/g;
console.log(regex.flags); // 输出:"g"

6. dotAll 模式(点字符匹配所有)

特性:当设置了 s 修饰符(dotAll)时,点字符(.)可以匹配包括换行符在内的任何字符。
用法:进行多行匹配。

const text = "foo\nbar";
const regex = /bar/s; // 使用 dotAll 模式console.log(regex.test(text)); // 输出:true

7. hasIndices 属性

特性:hasIndices 属性用于指示正则表达式是否捕获分组。
用法:检查正则表达式是否包含捕获组。

const regex1 = /foo/;
const regex2 = /foo(bar)/;console.log(regex1.hasIndices); // 输出:false
console.log(regex2.hasIndices); // 输出:true

8. Symbol.match, Symbol.replace, Symbol.search, Symbol.split

特性:这些 Symbol 属性允许使用正则表达式进行字符串匹配、替换、搜索和分割。
用法:提供一种更灵活的方式来处理字符串。

const text = "Hello World";
const regex = /world/i;console.log(text[Symbol.match](regex)); // 输出:["World"]
console.log(text[Symbol.replace](regex, "there")); // 输出:"Hello there"
console.log(text[Symbol.search](regex)); // 输出:4
console.log(text[Symbol.split](regex)); // 输出:["Hello ", ""]

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 实战:详解Spring创建bean的流程(图解+示例+源码)
  • vscode搭建PyQt + Quick开发环境
  • 阿里云服务器 篇五:短链服务网站
  • 使用NIFI连接瀚高数据库_并从RestFul的HTTP接口中获取数据局_同步到瀚高数据库中---大数据之Nifi工作笔记0067
  • Vue的自定义事件:组件间通讯的艺术
  • GitHub 令牌泄漏, Python 核心资源库面临潜在攻击
  • Linux云计算 |【第一阶段】ENGINEER-DAY2
  • 敏捷开发适用于哪些项目?你用对了吗?
  • 《Exploring Aligned Complementary Image Pair for Blind Motion Deblurring》
  • 导航专业入门,高考/考研假期预习指南
  • MKS流量计软件MFC通讯驱动使用于C和P系列MFC控制USB接口W10系统
  • docker compose 部署交互模式的容器-以Ubuntu为例
  • Shell 构建flutter + Android 生成Apk
  • A Survey on Multimodal Large Language Models综述
  • 简单记录一下ubantu18.04初步使用opencv所遇到的问题
  • const let
  • ES学习笔记(12)--Symbol
  • gcc介绍及安装
  • IDEA 插件开发入门教程
  • Java应用性能调优
  • js写一个简单的选项卡
  • Octave 入门
  • pdf文件如何在线转换为jpg图片
  • Vim 折腾记
  • 从零开始在ubuntu上搭建node开发环境
  • 回顾2016
  • 基于Android乐音识别(2)
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 今年的LC3大会没了?
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 如何设计一个比特币钱包服务
  • 什么软件可以剪辑音乐?
  • 2017年360最后一道编程题
  • 通过调用文摘列表API获取文摘
  • ​浅谈 Linux 中的 core dump 分析方法
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #{}和${}的区别?
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $.ajax()方法详解
  • ( 10 )MySQL中的外键
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (三) diretfbrc详解
  • (四)事件系统
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .env.development、.env.production、.env.staging
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .sdf和.msp文件读取
  • /etc/shadow字段详解
  • @EnableConfigurationProperties注解使用
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [AX]AX2012 SSRS报表Drill through action