如何编写正则实现允许任意数字、最多1个字母的输入校验规则
最多1个字母+任意数字的输入校验实现
原有代码问题
你之前写的正则/^[A-Za-z]{0,1}$/仅能匹配空字符串、单个字母两种场景,没有将数字纳入合法匹配范围,因此所有带数字的输入都会被判定为不合法。
修正后代码
export const onlyOneCharacter = (string) => { // 正则逻辑:从字符串开头到结尾,允许任意数量数字,后跟0或1个字母,再跟任意数量数字,确保字母总数不超过1 return /^\d*[A-Za-z]?\d*$/.test(string) ? undefined : "wrong"; };
测试用例匹配结果
- 输入
1a:符合规则,校验通过返回undefined - 输入
1ab:存在2个字母,校验不通过返回"wrong" - 输入
11:无字母全为数字,校验通过返回undefined - 输入
11ab:存在2个字母,校验不通过返回"wrong"
扩展提示:如果业务要求输入不能为空(不能提交空字符串),可以将正则替换为
/^(?=.)\d*[A-Za-z]?\d*$/,通过正向预查保证至少存在1个字符。
内容的提问来源于stack exchange,提问作者yolomartini
相关产品推荐
相关产品推荐

