用户可以在文本框中输入单独的序列号(即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/

07-24 09:39
查看更多