ES9 新特性(一):正则表达式的后行断言 (Lookbehind)

阅读时长 4 分钟读完

引言

随着计算机和互联网的不断发展,前端技术得到了越来越多的关注和投入。JavaScript 作为前端开发中应用最广泛的语言之一,每年都会有新的 ECMAScript 规范推出,不断完善和优化 JavaScript 语言特性。ES9 是 ECMAScript 的第九个版本,此次规范新增了正则表达式的后行断言 (Lookbehind)。本文将详细介绍 ES9 新特性之后行断言。

正则表达式的后行断言

所谓断言,就是指在字符串中找到符合正则表达式规则的子串,然后会对子串进行限制,最终匹配出符合要求的字符串。look-ahead assertion 与 look-behind assertion 的存在,很大部分上是为了解决正则匹配过程中"想保留的字符串" 和 "想从中过滤掉的字符串" 的这种矛盾。先来看一下后行断言的语法结构:

后行断言需要写在正则的表达式里面,它的现象会在括号内的表达式之前,向后发生匹配;但是,它的匹配结果并不包含括号内的表达式。其中 (?<=) 可以看做是一个运算符,表示只有当前匹配位置出现在某些内容的后面时才继续进行匹配。

后行断言的使用方法

后行断言可以在后面跟随一段正则表达式模式,用来限定匹配结果出现在某个模式之后。下面是一个简单的例子:

在这个例子中,使用 (?<=abcde\s) 式的后行断言来匹配 123,(?<=abcde\s) 表示必须在 abcde 和空格后面才会匹配出 123。

接下来,让我们来看一个更加实际的例子,比如在匹配带小数的数字的时候,我们希望只匹配小数点后面的数字,而不包括小数点前面的整数部分:

这个例子使用了后行断言 (?<=.)。其中,. 匹配小数点,\d+ 匹配一或多位数字。当正则表达式被应用到 str 字符串中时,只有匹配到一个小数点后面的数字才会返回,即结果为 14。

后行断言和前行断言的区别

可以发现,ES9 中增加的后行断言正好与之前存在的便是之前提到的前行断言相互呼应。前行断言是用来匹配输入字符串中某个位置之前的文本,而后行断言则是用来匹配输入字符串中某个位置之后的文本。下面,我们来对比一下它们的使用方法和差异:

前行断言示例:

代码中,使用了前行断言 (?=%) 和后行断言 (?<=$)。当正则表达式被应用到 str 字符串中时,只有匹配到数字和 % 之间部分的数字才会返回,即结果为 ['5', '1']。而在第二个例子中,使用后行断言 (?<=$) 匹配到 $ 和数字之间的数字 5。

后行断言示例:

这个例子使用后行断言 (?<=ES) 匹配 ES 后面的数字 9。当正则表达式被应用到 str 字符串中时,只有匹配到 ES 后面的数字才会返回,即结果为 9。

总结

后行断言是 ES9 新特性中新增的一个正则表达式特性,可以通过它来限定匹配结果出现在某个模式之后。通过本文的介绍,你已经了解了后行断言的基本语法结构和用法,希望能帮助大家更好地理解和掌握这一新特性。总的来说,正则表达式是 JavaScript 编程中不可或缺的工具之一,它可以让我们在处理各种文本类型的数据时更加便捷和高效,因此在实际开发中需要熟练掌握常见的正则表达式语法,以便更好地应对各种开发需求。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a3afc648841e989400cfab

纠错
反馈