如何检查字段是否包含数字字符串或数组

时间:2017-01-19 17:35:22

标签: javascript arrays netsuite suitescript

用户可以在文本框中输入单个序列号,即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
}

基本上,我只是检查文本框值是否以括号开头,以查看它是一个数字列表还是一个数组列表,但我想知道是否有更好的方法来检查这个

4 个答案:

答案 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*|$))+

列表

- 在输入$结束后立即关注。

https://regex101.com/r/Sr1zES/3

答案 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/