JavaScript正则验证1-7位无重复数字输入

使用 GPT-4o Mini 回答,作者 GPT4oMini.app

问题:

用js正则实现验证,输入1-7个数字,输入的内容不能有重复的数字

答案:

你可以使用 JavaScript 的正则表达式来验证输入是否符合要求。以下是一个示例代码,验证输入是否为 1 到 7 个数字,并且没有重复的数字:

function validateInput(input) {
    // 正则表达式:匹配1到7个数字
    const regex = /^\d{1,7}$/;

    // 检查输入是否符合正则表达式
    if (!regex.test(input)) {
        return false; // 输入不符合数字长度要求
    }

    // 检查是否有重复数字
    const digits = input.split('');
    const uniqueDigits = new Set(digits);
    
    return digits.length === uniqueDigits.size; // 如果长度相同,则没有重复数字
}

// 测试
console.log(validateInput("1234567")); // true
console.log(validateInput("12345678")); // false
console.log(validateInput("1234561")); // false
console.log(validateInput("12345")); // true
console.log(validateInput("1234a")); // false

代码说明:

  1. 使用正则表达式 ^\d{1,7}$ 来验证输入是否为 1 到 7 个数字。
  2. 如果输入符合数字长度要求,接着将输入字符串拆分成单个字符(数字),并使用 Set 来去重。
  3. 最后比较原始数组的长度和去重后的 Set 的大小,如果相同,则说明没有重复数字,返回 true;否则返回 false

你可以根据需要调用 validateInput 函数来验证不同的输入。