JavaScript - Symbol.matchAll 属性



ES6 中添加的一个常用 JavaScript 元件是 Symbol.matchAll 属性。它用作元件对象的键。

Symbol.matchAll 属性用于创建表示正则表达式匹配的对象,可以迭代该对象以检索字符串中的所有匹配项。当使用全局正则表达式时,匹配字符串中模式的多个实例,此属性非常有用。

语法

以下是 JavaScript Symbol.matchAll 属性的语法 -


 regExp[Symbol.matchAll](str);

参数

此属性采用一个字符串,该字符串用于查找正则表达式的匹配项。

返回值

此属性返回返回正则表达式 matches 的迭代器。

示例 1

让我们看看下面的示例,我们将在其中使用 for of 循环来迭代匹配项。


<html>
	 	<style>
	 	 	 body {
	 	 	 	 	font-family: verdana;
	 	 	 	 	color: #DE3163;
	 	 	 }
	 	</style>
	 	<body>
	 	 	 <script>
	 	 	 	 	const x = 'qikepu, com';
	 	 	 	 	const reg_exp = /([A-Z])\w+/g;
	 	 	 	 	for (const match of x.matchAll(reg_exp)) {
	 	 	 	 	 	 document.write(match[1] + " < br > ");
	 	 	 	 	}
	 	 	 </script>
	 	</body>
</html>

如果我们执行上述程序,它将在网页上显示文本。

示例 2

考虑另一个场景,我们将使用 Array.from 将迭代器转换为数组。


<html>
	 	<style>
	 	 	 body {
	 	 	 	 	font-family: verdana;
	 	 	 	 	color: #DE3163;
	 	 	 }
	 	</style>
	 	<body>
	 	 	 <script>
	 	 	 	 	const x = 'HELLO , everyone';
	 	 	 	 	const reg_exp = /[A-Z]/g;
	 	 	 	 	const a = Array.from(x.matchAll(reg_exp), m => m[0]);
	 	 	 	 	document.write(JSON.stringify(a));
	 	 	 </script>
	 	</body>
</html>

在执行上述脚本时,它将在网页上显示文本。

示例 3

在下面的示例中,我们将使用 flags 并重新转换所有匹配子字符串的迭代器,而不管大小写如何。


<html>
	 	<style>
	 	 	 body {
	 	 	 	 	font-family: verdana;
	 	 	 	 	color: #DE3163;
	 	 	 }
	 	</style>
	 	<body>
	 	 	 <script>
	 	 	 	 	const str = 'qikepucom, TP';
	 	 	 	 	const regex = /tp/gi;
	 	 	 	 	const matches = str.matchAll(regex);
	 	 	 	 	for (const match of matches) {
	 	 	 	 	 	 document.write(match[0]);
	 	 	 	 	}
	 	 	 </script>
	 	</body>
</html>

当我们执行脚本时,它会在网页上显示一个文本。