我有一个if语句,它检查用户是否将输入留空并且没有输入正确的模式(本质上是一个学生编号)。然而,当我输入一个随机的单词和数字组合时,它似乎仍然通过,好像它没有检查正则表达式验证。
var idInput = formHandle.f__id; //this connects back to my HTML form
var studentNum = /(n|N)\d{8}/;
if (idInput.value === "" && !studentNum.test(idInput)) {
idInput.style.background = 'red';
idInput.focus();
return false;
}
字符串
2条答案
按热度按时间pbpqsu0x1#
根据你的问题,我相信你的代码只是有一个逻辑错误。
据我所知,你想在输入无效的情况下输入if语句(所以它是空的,或者违反了正则表达式)。但是,你使用的是
&&
而不是||
。对于您的测试用例,如果您输入随机字符,则
idInput.value !== ""
,因此if语句将不会执行。zhte4eai2#
1.你的
&&
应该是||
:如果输入为空 * 或 * 不匹配正则表达式。因为正则表达式不会匹配空字符串,所以你不需要idInput.value === ""
检查。!studentNum.test(idInput)
应为!studentNum.test(idInput.value)
1.你忘记了正则表达式中的锚
^
(字符串的开始)和$
(字符串的结束)。没有它们,这只是在字符串中搜索“n或N后跟8位”* 任何地方 *。固定代码:
字符串
(side注意,是否有任何理由使用
var
而不是let
/const
?)