使用 JavaScript 计算字符串中的出现次数
我们将使用 JavaScript 匹配方法来计算字符串中特定单词/字符的总出现次数。但在我们了解这一点之前,让我们先了解一下什么是正则表达式。
JavaScript 中 RegEx
的概念
正则表达式是一种可以实现特定字符串模式的搜索。JavaScript 还支持将正则表达式作为对象。
这些模式与 split()
、replace()
、search()
、match()
、matchAll()
和 replaceAll()
一起使用。
构造正则表达式有两种方法,使用文字正则表达式或调用 RegEx 的构造函数。
有关 RegEx 的更多信息,请参见 RegEx
的文档。
在继续计算匹配字符串的出现次数之前,让我们了解一些常见的模式。
\d
是匹配任何数字/数字的正则表达式。它类似于[0-9]
。\w
是一个正则表达式,匹配A
-Z
、a
-z
、0
-9
和_
范围内的任何给定单词字符代码。\s
是匹配每个空白字符的正则表达式,例如空格、制表符、换行符。\b
是一个正则表达式,它匹配单词字符和非单词字符之间的任何单词边界位置或位置(字符串的开头/结尾)。[A-Z]
是一个正则表达式,匹配A
-Z
范围内的任何给定字符代码。[0-9]
是一个正则表达式,匹配0
-9
范围内的任何给定字符代码。
每个 RegEx 都包含某些标志。每个标志都有其含义,它为正则表达式提供了额外的属性。
下面列出了其中一些:
i
标志不区分大小写,这意味着整个表达式不区分大小写。g
标志表示全局搜索,它保留最后一个匹配的索引,允许后续搜索从前一个匹配的末尾开始。如果没有全局标志,后续搜索将返回相同的匹配项。m
标志表示多行。当多行标志打开时,开始和结束锚点^ 和 $
匹配一行的开始和结束,而不是整个字符串的开始和结束。u
标志代表 Unicode。通过设置此标志,用户可以使用\x{FFFFF}
形式的 Unicode 扩展转义。
语法:
const regEx = /pattern/;
const regEx = new RegExp('pattern');
function phonenumber() {
const indiaRegex = /^\+91\d{10}$/;
const inputText = document.getElementById('phoneNumber').value;
if (inputText.match(indiaRegex)) {
console.log('Valid phone number');
} else {
console.log('Not a valid Phone Number');
}
}
在 JavaScript 中使用 match()
计算字符串中的出现次数
match()
方法是一个内置的 JavaScript 方法。此方法检索将字符串/字符与原始字符串提供的正则表达式进行匹配的结果。
语法:
match(regexp)
它将正则表达式作为输入参数,并根据原始字符串查找匹配的字符串/字符。
它是一个可选参数。如果在 match 方法中没有将正则表达式作为参数传递,它将返回带有空字符串的数组。
根据正则表达式的 g
(全局)标志,它返回数组。如果通过了 g
标志,则返回所有匹配的字符串/字符。
有关详细信息,请参阅 match
方法文档。
var inputString = 'Hello World. This is a string.';
var count = (inputString.match(/is/g) || []).length;
console.log(count);
在上面的代码中,我们试图确定 is
这个词的总出现次数,而不管它在哪里。
如果你传递 g
(全局)标志,它将尝试找出所有匹配项。例如,This
中的 is
是有效匹配。
一旦你在任何浏览器中运行上述代码,它就会打印出类似这样的内容。
输出:
2
要检查完整的工作代码,单击此处。
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn