提问人:Keith D Kaiser 提问时间:4/7/2020 最后编辑:NickKeith D Kaiser 更新时间:4/7/2020 访问量:29
根据可用数字和字母列表验证三个字母数字字符串的最佳方法
Best method to validate a three alphanumeric string against a list of available numbers and letters
问:
我正在尝试验证输入字段,如果它不好,请强制用户重新输入它。 输入将始终是一个数字 1 到 22 和一个字符 A 到 F。我的代码如下所示,问题是输入的所有内容都被报告为“不好”。为什么?
function checkFD() {
var str = $("#fieldday").val().trim().toUpperCase();
var letterNumber = /^[1-22A-F]+$/;
if (str.match(letterNumber)) {
alert("its good");
checkIn();
return true;
} else {
alert("not good");
return false;
}
}
答:
1赞
Nick
4/7/2020
#1
您的正则表达式不正确,它正在寻找由集合中一定数量的字符组成的输入。您要检查的是检查第一部分是该范围内的数字,然后是该范围内的字符。这应该有效:1,2,A,B,C,D,E,F
1-22
A-F
var letterNumber = /^(?:[1-9]|1[0-9]|2[0-2])[A-F]$/;
请注意,由于您只是在检查匹配项,因此应使用 而不是 .letterNumber.test(str)
str.match(letterNumber)
1赞
Twisty
4/7/2020
#2
请考虑以下代码。
$(function() {
function checkIn() {
// Do the needful
}
function checkFD() {
var str = $(this).val().trim();
var regex = /^(?:[1-9]|1\d|2[0-2])[A-F]$/i;
var valid = regex.test(str);
if (valid) {
alert("its good");
$(this).val($(this).val().toUpperCase());
checkIn();
} else {
alert("not good");
}
return valid;
}
$("#code").change(checkFD);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="code" />
您最多可以输入,它会报告“好”。如果输入 ,则报告“错误”。1A
22F
23AF
另请参阅: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
评论
.test()
.match()
letterNumber.test(str);