正则表达式一直是前端开发中非常重要的一部分,它可以帮助我们快速地匹配和处理字符串。在 ES2017 标准中,正则表达式得到了一些扩展,让它更加强大和易用。本文将介绍 ES2017 中的正则扩展,包括新的修饰符、新的方法和属性等。
修饰符
s 修饰符
在以前的正则表达式中,.
匹配除了换行符外的任何字符。但是在某些情况下,我们需要匹配包括换行符在内的任何字符。在 ES2017 中,可以使用 s
修饰符来实现这个功能。例如:
----- --- - --------------- ----- --- - --------------- --------------------------- -- ----
上面的代码中,/hello.world/s
表示匹配 hello
和 world
之间包括换行符在内的任何字符。
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