ES2017 标准中的正则扩展

阅读时长 4 分钟读完

正则表达式一直是前端开发中非常重要的一部分,它可以帮助我们快速地匹配和处理字符串。在 ES2017 标准中,正则表达式得到了一些扩展,让它更加强大和易用。本文将介绍 ES2017 中的正则扩展,包括新的修饰符、新的方法和属性等。

修饰符

s 修饰符

在以前的正则表达式中,. 匹配除了换行符外的任何字符。但是在某些情况下,我们需要匹配包括换行符在内的任何字符。在 ES2017 中,可以使用 s 修饰符来实现这个功能。例如:

上面的代码中,/hello.world/s 表示匹配 helloworld 之间包括换行符在内的任何字符。

y 修饰符

在以前的正则表达式中,使用 g 修饰符进行全局匹配时,匹配的位置是从上一次匹配的位置开始的。而在 ES2017 中,可以使用 y 修饰符来进行粘连匹配,也就是从上一次匹配的结束位置开始匹配。例如:

上面的代码中,/l/y 表示匹配 str 中的所有 l,但是需要从上一次匹配的结束位置开始匹配。因此第一次匹配到了 h 后的第一个 l,第二次匹配到了 o 后的第一个 l,第三次没有匹配到任何字符,返回了 null

方法

RegExp.prototypeSymbol.matchAll

RegExp.prototype[Symbol.matchAll]() 方法返回一个迭代器,可以用来迭代一个字符串中所有匹配正则表达式的位置和捕获组。例如:

上面的代码中,/l/g 表示匹配 str 中的所有 l。使用 reg[Symbol.matchAll](str) 返回一个迭代器,可以迭代所有匹配的位置和捕获组。

String.prototype.padStart() 和 String.prototype.padEnd()

String.prototype.padStart()String.prototype.padEnd() 方法可以用来在字符串的开头或结尾添加一定数量的字符,以达到指定的长度。例如:

上面的代码中,str.padStart(10, '-') 表示在 str 的开头添加 - 直到字符串长度达到 10,str.padEnd(10, '-') 表示在 str 的结尾添加 - 直到字符串长度达到 10。

属性

RegExp.prototype.flags

RegExp.prototype.flags 属性返回正则表达式的修饰符。例如:

上面的代码中,/hello/gi 表示匹配 hello 并且全局匹配、忽略大小写。使用 reg.flags 返回正则表达式的修饰符。

总结

ES2017 中的正则扩展为我们提供了更加强大和便利的正则表达式操作。包括新的修饰符、新的方法和属性等。我们可以根据实际需求选择合适的扩展来进行字符串匹配和处理。

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

纠错
反馈