使用Regular expression匹配JavaScript字符串中出现超过两次的相同字符
JavaScript正则匹配同一字符出现超过2次的实现方案
核心正则
你可以使用带反向引用的正则实现需求:/(.)(?:.*\1){2}/
正则逻辑说明
.匹配任意单个字符()将匹配到的第一个字符捕获为分组1.*\1表示匹配任意长度的任意内容后,再次出现分组1捕获的字符{2}表示上述.*\1规则重复2次,加上最初捕获的1次,对应同一字符总共至少出现3次
调用示例
// 校验字符串是否存在同一字符出现超过2次的情况 function checkDuplicateChar(str) { return /(.)(?:.*\1){2}/.test(str); } // 测试用例 console.log(checkDuplicateChar('112561')); // 输出 true,数字1共出现3次,符合要求 console.log(checkDuplicateChar('aabbcc')); // 输出 false,所有字符都仅出现2次 console.log(checkDuplicateChar('xyxxz')); // 输出 true,字母x共出现3次
变体场景适配
- 若要匹配连续的相同字符超过2次,将正则改为
/(.)\1{2,}/即可,该规则仅匹配aaa、111这类连续重复的场景 - 若要限定仅匹配数字/字母,将
.替换为对应的字符集即可:- 仅匹配数字:
/(\d)(?:.*\1){2}/ - 仅匹配字母:
/([a-zA-Z])(?:.*\1){2}/
- 仅匹配数字:
内容的提问来源于stack exchange,提问作者Gihan Primesha
相关产品推荐
相关产品推荐

