用户可以在文本框中输入单个序列号,即1,2,3,4,5,或扫描输出格式为[460,3],[123,321],[900,123]的QR码。
我需要做的是验证字段以检查是否扫描了QR码或用户是否输入了个别号码。假设它是一种格式或另一种格式 - 它不能同时存在。
目前我将此作为过滤器:
if(serialnumbers[0] != '['({
//code for individual numbers
}
else{ //code for qr code arrays
}
基本上,我只是检查文本框值是否以括号开头,以查看它是一个数字列表还是一个数组列表,但我想知道是否有更好的方法来检查这个
答案 0 :(得分:1)
不确定为什么你不能使用typeof。 这就是我在这里要做的事情:
if(typeof serialnumbers != 'string'){
//code for qr code arrays
}
else{
//code for individual numbers
}
我的小提琴更深入,检查出来! https://jsfiddle.net/zkqd1bre/3/
答案 1 :(得分:0)
试试这个:
if(serialnumbers.substr(0, 1) != '['){
//code for individual numbers
}
您可以在此处查看有关此功能的更多信息:http://www.w3schools.com/jsref/jsref_substr.asp
答案 2 :(得分:0)
你可以用这个正则表达式做到这一点,这比它最初的看起来更直接,因为它只是一个替代:
/^((\d+(,\s*|$))+|(\[\d+,\s*\d+\](,\s*|$))+)$/.test(input)
英文分解:
- 从字符串^
开始,使用:
- (主要变更的第一部分|
)以逗号分隔的数字 (\d+(,\s*|$))+
- OR (替换的第二部分)以逗号分隔的 [number,number] (\[\d+,\s*\d+\](,\s*|$))+
- 在输入$
结束后立即关注。
答案 3 :(得分:0)
您可以使用单个正则表达式执行此操作。
我已经发布了相关的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/