
本文介绍使用 javascript 正则表达式高效统计字符串中大写字母、小写字母、数字及特殊字符出现次数的方法,通过 string.prototype.match() 配合全局标志 g 实现简洁可靠的计数逻辑。
本文介绍使用 javascript 正则表达式高效统计字符串中大写字母、小写字母、数字及特殊字符出现次数的方法,通过 string.prototype.match() 配合全局标志 g 实现简洁可靠的计数逻辑。
在 JavaScript 中,统计字符串中符合某类正则模式的子串出现次数,最直接且高效的方式是利用 match() 方法配合全局正则表达式(/pattern/g)。该方法返回所有匹配项组成的数组;若无匹配,则返回 null —— 因此需用 || [] 做空值防护,再调用 .length 获取数量。
以下是一个完整、可复用的字符分类统计函数:
function countCharacters(inputStr) {
// 匹配所有大写字母(A–Z)
const uppercaseCount = (inputStr.match(/[A-Z]/g) || []).length;
// 匹配所有小写字母(a–z)
const lowercaseCount = (inputStr.match(/[a-z]/g) || []).length;
// 匹配所有数字(等价于 [0-9])
const numberCount = (inputStr.match(/d/g) || []).length;
// 匹配常见 ASCII 特殊字符(注意:连字符 - 需置于末尾或转义,避免被解析为范围符)
const specialCount = (inputStr.match(/[!@#$%^&*()_+{}[]:;<>,.?~\-]/g) || []).length;
return {
uppercase: uppercaseCount,
lowercase: lowercaseCount,
numbers: numberCount,
specialCharacters: specialCount
};
}
// 示例调用
const str = "AABBCCaabbcc123!@#";
const result = countCharacters(str);
console.log("Uppercase count:", result.uppercase); // 6
console.log("Lowercase count:", result.lowercase); // 6
console.log("Number count:", result.numbers); // 3
console.log("Special character count:", result.specialCharacters); // 3✅ 关键要点说明:
- match(/.../g) 是核心:g(global)标志确保匹配全部而非仅首个;
- (… || []).length 是安全写法:避免对 null 调用 .length 报错;
- 特殊字符正则中,- 放在末尾(或开头)可免于转义歧义;若需覆盖更广字符集(如 Unicode 符号),建议改用 p{P}p{S} 配合 u 标志(需环境支持);
- 该方案时间复杂度为 O(n),无需循环遍历,性能优异且语义清晰。
? 进阶提示:如需动态扩展分类(如中文、空白符、Emoji 等),可将规则抽象为配置数组,实现可插拔式字符统计器。但对绝大多数场景,上述函数已足够健壮、易读且零依赖。
立即学习“Java免费学习笔记(深入)”;










