在 ECMAScript 2020 中,新增了一些字符串匹配的新特性,包括 String.prototype.matchAll
、String.prototype.replaceAll
和 String.prototype.trimStart
/String.prototype.trimEnd
。这些新特性为前端开发带来了更加便利和高效的字符串处理方式。
String.prototype.matchAll
String.prototype.matchAll
方法返回一个迭代器,用于遍历字符串中所有匹配某个正则表达式的子串。这个方法可以替代 RegExp.prototype.exec
方法,并且支持全局匹配和捕获组。
示例代码:
const str = 'Hello world! Hello JavaScript!'; const regex = /Hello (\w+)/g; for (const match of str.matchAll(regex)) { console.log(match[1]); } // Output: // world // JavaScript
上面的代码中,matchAll
方法返回了一个迭代器,遍历了字符串中所有匹配 Hello (\w+)
表达式的子串。在迭代器中,可以通过 match[index]
来获取捕获组的值。
String.prototype.replaceAll
String.prototype.replaceAll
方法可以替换字符串中所有匹配某个正则表达式的子串。这个方法是 String.prototype.replace
方法的全局替换版本。
示例代码:
const str = 'Hello world! Hello JavaScript!'; const regex = /Hello/g; const newStr = str.replaceAll(regex, 'Hi'); console.log(newStr); // Output: Hi world! Hi JavaScript!
上面的代码中,replaceAll
方法将字符串中所有匹配 Hello
表达式的子串替换为 Hi
。
String.prototype.trimStart/String.prototype.trimEnd
String.prototype.trimStart
和 String.prototype.trimEnd
方法可以分别去掉字符串开头和结尾的空格。
示例代码:
const str = ' Hello world! '; const newStr = str.trimStart().trimEnd(); console.log(newStr); // Output: Hello world!
上面的代码中,trimStart
方法去掉了字符串开头的两个空格,trimEnd
方法去掉了字符串结尾的一个空格。
总结
ECMAScript 2020 的字符串匹配新特性为前端开发带来了更加便利和高效的字符串处理方式。开发者可以使用 String.prototype.matchAll
方法遍历字符串中所有匹配某个正则表达式的子串,使用 String.prototype.replaceAll
方法替换字符串中所有匹配某个正则表达式的子串,使用 String.prototype.trimStart
和 String.prototype.trimEnd
方法去掉字符串开头和结尾的空格。这些新特性的引入,将大大提升前端开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/658e80f9eb4cecbf2d464537