ES10 采用的新正则特性解析及使用教程
正则表达式是前端开发中常用的一种技术。ES10 中新增了一些新的正则特性,本篇文章就来详细解析这些新特性,并提供相应的使用教程与示例代码。
- s 修饰符
s 修饰符是 ES10 中新增的一种修饰符,它可以让点号 . 匹配任何字符,包括换行符。在以往的正则表达式中,点号只能匹配除了换行符之外的任何字符。
// 示例代码
const str = hello world
;
console.log(str.match(/hello.world/)); // null
console.log(str.match(/hello.world/s)); // ["hello\nworld"]
- Unicode 属性转义
ES10 引入了 Unicode 属性转义,它可以通过 \p{} 和 \P{} 实现,用于匹配某个字符是否属于某一类别,如是否为字母、数字、空格等。
// 示例代码 console.log(/\p{Letter}/u.test("a")); // true console.log(/\p{Letter}/u.test("1")); // false console.log(/\p{Number}/u.test("1")); // true console.log(/\p{Space}/u.test(" ")); // true console.log(/\P{Space}/u.test(" ")); // false
- (?<=) 和 (?<!) 正向断言和负向断言
在以往的正则表达式中,如果想要匹配某些内容,但又不想将其作为匹配结果返回,通常会使用括号对其进行分组,但这样会导致分组匹配结果在最终匹配结果中出现。为了解决这个问题,ES10 引入了正向断言 (?<=) 和负向断言 (?<!)。
// 示例代码 console.log(/q(?!u)/.test("q")); // true console.log(/q(?!u)/.test("qu")); // false console.log(/(?<!a)b/.test("b")); // true console.log(/(?<!a)b/.test("ab")); // false
- 可选数字分隔符
ES10 引入了可选数字分隔符,可以在数字中使用下划线 _ 进行分割,便于区分大数字,并不影响数字的计算。
// 示例代码 console.log(1_000_000); // 1000000 console.log(1e7); // 10000000
总结
ES10 中新增的正则特性,让正则表达式的匹配能力更加强大,丰富了前端开发工具的应用场景。同时,也提供了更多的思考和实践空间,为前端开发带来了更多的可能性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ca7dd65ad90b6d041b49bf