用户可以在文本框中输入单独的序列号(即1,2,3,4,5),也可以扫描QR码,然后输出为[460,3],[123,321],[900,123]格式。
我需要做的是验证该字段,以检查是否扫描了QR码或用户是否输入了单独的号码。假设它是一种格式或另一种格式-不能两者都用。
目前,我将此作为过滤器:
if(serialnumbers[0] != '['({
//code for individual numbers
}
else{ //code for qr code arrays
}
基本上,我只是在检查文本框值是否以方括号开头,以查看其是数字列表还是数组列表,但是我想知道是否有更好的方法来检查此值
最佳答案
您可以使用单个正则表达式执行此操作。
我已经发布了一个相关的RegEx供您探索和学习,网址为:http://regexr.com/3f4au
在代码中使用的是:
var individualCheck = /^(\d+)$|^((\d+,)+(\d+))$/;
var qrCheck = /^\[(\d+\,\d+)\]((\,\s*\[(\d+\,\d+)\])*)$/;
if (serialnumbers.match(individualCheck)){
console.log("Individual Numbers Style");
// code for individual numbers
} else if (serialnumbers.match(qrCheck)) {
console.log("QR Codes Style");
//code for qr code arrays
} else {
console.log("Validation failed");
//code for invalid input
}
或为您提供的JSFiddle:https://jsfiddle.net/kitkit/5Lxmz6dy/2/