正则表达式校验需求:需匹配#开头后跟8位数字的字符串
修复自行车序列号的正则匹配问题
你的需求是匹配以#开头、紧跟8位数字的格式(比如#00000001),但当前的正则表达式有个小问题:
原正则/^#\d{8}*$/里的*是多余的——\d{8}已经明确表示必须匹配恰好8位数字,后面加*会变成“8位数字出现0次或多次”,这会导致像#(只有#没有数字)、#123456789(超过8位)这类不符合要求的字符串也能通过校验。
正确的正则写法
把多余的*去掉,改成:
let regBikeno = /^#\d{8}$/;
^:匹配字符串的开始#:匹配开头的#符号\d{8}:严格匹配8位数字$:匹配字符串的结束
这样就能确保输入的内容完全符合#+8位数字的格式了。
修改后的完整代码
let bikeno = $('input:text[name=bikeno]').val().trim(); let regBikeno = /^#\d{8}$/; if(!regBikeno.test(bikeno)) { alert("请正确输入自行车序列号。"); return false; }
内容的提问来源于stack exchange,提问作者Kang Hyeongu
相关产品推荐
相关产品推荐

