You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

限制连续相同字符出现 实现合法姓名输入校验

姓名连续重复字符校验实现方案

核心校验规则为:检测输入的姓名中是否存在连续3次及以上的相同字符,如果存在则判定为非法姓名不予接收,可根据实际业务需求调整连续重复的次数阈值。

实现思路

两种通用实现方式可按需选择:

  • 正则匹配:代码最简洁,性能满足绝大多数场景的校验需求
  • 遍历字符串统计:适合需要叠加其他自定义校验规则、不希望依赖正则的场景

正则规则说明

匹配连续n次及以上相同字符的正则为(.)\1{n-1,},以最常用的连续3次判定非法为例,对应正则为(.)\1{2,}:

  • . 匹配任意单个字符,包括中文、英文字母等
  • \1 反向引用第一个捕获组匹配到的字符
  • {2,} 代表前面的\1再匹配至少2次,即同一个字符总共连续出现至少3次

各语言实现示例

JavaScript 前端校验

function isValidName(name) {
  // 连续3次相同字符判定为非法
  const invalidPattern = /(.)\1{2,}/;
  // 可叠加非空、长度校验等其他规则
  if (!name.trim() || name.length > 50) return false;
  return !invalidPattern.test(name);
}

// 测试用例
console.log(isValidName("daaaaa")); // 输出 false
console.log(isValidName("david")); // 输出 true
console.log(isValidName("李一一一")); // 输出 false

Python 后端校验

import re

def is_valid_name(name: str) -> bool:
    invalid_pattern = r'(.)\1{2,}'
    # 可叠加长度、特殊字符校验等其他规则
    if not name.strip() or len(name) > 50:
        return False
    return not re.search(invalid_pattern, name)

# 测试用例
print(is_valid_name("daaaaa")) # 输出 False
print(is_valid_name("张三")) # 输出 True

Java 后端校验

import java.util.regex.Pattern;

public class NameValidator {
    private static final Pattern INVALID_NAME_PATTERN = Pattern.compile("(.)\\1{2,}");

    public static boolean isValidName(String name) {
        // 可叠加非空、长度、特殊字符校验等其他规则
        if (name == null || name.trim().isEmpty() || name.length() > 50) {
            return false;
        }
        return !INVALID_NAME_PATTERN.matcher(name).find();
    }

    public static void main(String[] args) {
        System.out.println(isValidName("daaaaa")); // 输出 false
        System.out.println(isValidName("John")); // 输出 true
    }
}

内容的提问来源于stack exchange,提问作者john david

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:54:03