如何简化多输入的三位重复数字验证逻辑?
简化多字符串验证的实现方案
你的需求是验证数组中所有输入都是由同一数字重复三次组成的字符串,下面提供两种简洁的实现方式,兼顾可读性和代码简洁度:
方案一:非正则的简洁实现
利用数组的every方法替代原有的forEach,它会自动在遇到不满足条件的元素时终止遍历,无需手动维护valid变量:
const valid = inputs.every(input => { // 三个条件:长度为3、所有字符与第一个字符相同、第一个字符是数字 return input.length === 3 && input.split('').every(char => char === input[0]) && !isNaN(input[0]); }); console.log(valid);
逻辑说明:
inputs.every(...):检查数组中所有元素是否都满足验证条件input.length === 3:确保输入是3位字符串input.split('').every(char => char === input[0]):拆分字符串为单个字符,验证所有字符和第一个字符一致!isNaN(input[0]):确保第一个字符是数字(避免'aaa'这类非数字的无效输入)
方案二:易懂的正则表达式实现
你觉得正则复杂是因为没拆解清楚,其实这个场景的正则非常直观:
const valid = inputs.every(input => /^(\d)\1{2}$/.test(input)); console.log(valid);
正则拆解(逐段理解就不复杂了):
^:匹配字符串的开头,确保前面没有多余字符(\d):匹配一个数字,并用括号把它标记为「分组1」\1{2}:引用「分组1」里的数字,重复2次(加上前面的1次,总共3次)$:匹配字符串的结尾,确保后面没有多余字符
这个正则精准对应“三个相同数字”的规则,代码量最少,效率也很高。
内容的提问来源于stack exchange,提问作者leon
相关产品推荐
相关产品推荐

