ES11 中正则表达式具体用法及添加新标志符的实践

正则表达式作为前端开发中常用的一项技术,一直以来都扮演着重要的角色。在 ES11 中,正则表达式得到了进一步的优化和拓展,具体用法和实践如下:

1. 添加新标志符

ES11 中,新增了两个标志符 i 和 s,分别表示忽略大小写和处理 unicode 码点。可以通过在正则表达式后面添加 i 或 s 进行使用:

  • i 标志符:忽略大小写,可用于字符串的搜索,比如 /hello/i 匹配的是 "hello"、"Hello"、"HELLO" 等。
  • s 标志符:处理 unicode 码点,可识别不同的字符集合,比如 /café/ 匹配的是 "café",但 /café/s 匹配的是 "caf\u00e9"。

以下为新标志符的示例代码:

const regex1 = /hello/i;
const regex2 = /café/;
const regex3 = /café/s;

console.log(regex1.test('Hello World')); // output: true
console.log(regex2.test('café')); // output: true
console.log(regex3.test('caf\u00e9')); // output: true

2. 正则表达式捕获组的引用

ES11 中,还可以通过捕获组的引用来快速匹配文本中的某些特定内容。捕获组指的是用圆括号括起来的正则表达式,可以通过 $1、$2、$3 等引用来快速匹配到捕获组中的内容。

以下为正则表达式捕获组的引用的示例代码:

const regex4 = /(\d{4})-(\d{2})-(\d{2})/;
const date = '2022-05-20';
const newDate = date.replace(regex4, '$2/$3/$1');

console.log(newDate); // output: "05/20/2022"

3. 省略正则表达式的 flags 参数

ES11 中,当使用 new RegExp() 构造函数创建正则表达式时,可以省略 flags 参数。因为 flags 是可选参数,当该参数缺省时,正则表达式将默认为有全局 g 标志和不区分大小写 i 标志。

以下为省略 flags 参数的示例代码:

const regex5 = new RegExp('hello', 'i');
const regex6 = new RegExp('hello');

console.log(regex5.test('Hello World')); // output: true
console.log(regex6.test('Hello World')); // output: true

总结: ES11 中的正则表达式新增了 i 和 s 标志符,方便实现忽略大小写和处理 unicode 码点,同时还可以通过捕获组的引用快速匹配特定内容。记得可以省略 flags 参数,当然具体是否省略要参考实际需要。正则表达式是前端开发中常用的一项技术,要熟练掌握它的基础语法和常见应用场景,能够快速解决问题和提升开发效率。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6594f770eb4cecbf2d93d15c


纠错反馈