VS Code中如何实现用户名数字与特殊字符的合法性校验
用户名合法性校验实现方案
原有逐字符调用.includes()的写法扩展性差、覆盖场景有限,直接使用正则表达式做统一规则匹配是最高效的实现方式,一次校验即可覆盖所有非法字符检测需求。
校验规则
- 用户名禁止包含0-9的任意数字
- 用户名禁止包含以下特殊字符:
? / . , ; ' [ ] { } | & ^ % @ - 检测到非法输入时打印错误提示,重新引导用户输入,循环校验直到输入完全合规
完整可运行代码
// 定义非法字符匹配正则:匹配任意数字、指定禁用特殊字符,正则元字符需做转义处理 const invalidPattern = /[0-9?/.,;'\[\]{}|&^%@]/; let userName = input.question('Please enter your name: '); while (invalidPattern.test(userName)) { console.log("Invalid Name!"); userName = input.question('Please enter your name: '); } // 跳出循环后userName即为符合规则的合法值
逻辑说明
- 正则使用方括号
[]定义匹配字符集,只要输入内容包含字符集内任意一个字符,test()方法就会返回true,判定为非法输入 - 字符集中的
[、]属于正则语法保留符号,写入匹配规则时需要加反斜杠转义,否则会被识别为字符集边界,导致匹配规则失效 - 替换了原代码中重复声明
var的写法,使用let声明变量符合现代JavaScript编码规范,可避免变量提升引发的潜在问题 - 后续如果需要新增禁用字符,直接将字符追加到正则的字符集中即可,无需新增额外判断逻辑,维护成本更低
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

