【问题标题】:How to check if a field contains a string of numbers or an array如何检查字段是否包含一串数字或数组
【发布时间】:2017-01-19 17:35:22
【问题描述】:

用户可以在文本框中输入单个序列号,即 1、2、3、4、5,或扫描输出为 [460, 3]、[123,321]、[900,123] 格式的二维码。

我需要做的是验证该字段以检查是否扫描了二维码或用户是否输入了单个数字。假设它是一种格式或另一种格式 - 它不能同时是两种格式。

目前我有这个作为过滤器:

if(serialnumbers[0] != '['({
   //code for individual numbers
}
else{ //code for qr code arrays
}

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

【问题讨论】:

  • 可以使用typeof的场景。

标签: javascript arrays netsuite suitescript


【解决方案1】:

不知道为什么你不能使用 typeof。 这就是我在这里要做的:

if(typeof serialnumbers != 'string'){
    //code for qr code arrays
}
else{
    //code for individual numbers
}

我的 Fiddle 更深入,看看吧! https://jsfiddle.net/zkqd1bre/3/

【讨论】:

  • 该字段是一个文本框,因此它始终是一个字符串。我已经有了将字符串转换为数字数组或数组数组的方法,但似乎找不到更好的方法来首先检查它是数字字符串还是数组字符串。
【解决方案2】:

你可以用一个正则表达式来做到这一点。

我已经发布了一个相关的正则表达式供您探索和学习: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/

【讨论】:

  • 感谢演示。只扫一个二维码有效,扫多则无效
  • 抱歉,克里斯 - 我最初并没有意识到您还想允许无限的二维码列表。我已经更新了我的答案以通过增强的 QRCode 检查来实现这一点,并且还更新了 RegExr 和 JSFiddle 链接。
【解决方案3】:

试试这个:

if(serialnumbers.substr(0, 1) != '['){
    //code for individual numbers
}

您可以在此处查看有关此功能的更多信息:http://www.w3schools.com/jsref/jsref_substr.asp

【讨论】:

    【解决方案4】:

    你可以用这个正则表达式来做到这一点,它比第一次看起来更简单,因为它只是一个交替:

    /^((\d+(,\s*|$))+|(\[\d+,\s*\d+\](,\s*|$))+)$/.test(input)
    

    英文分解:

    -从字符串^开始,消费:

    -(主要替换的第一部分|) 数字的逗号分隔列表(\d+(,\s*|$))+

    -OR(替换的第二部分)[number, number]的逗号分隔列表(\[\d+,\s*\d+\](,\s*|$))+

    -紧随输入$ 的结尾。

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

    【讨论】:

      猜你喜欢
      • 2022-06-30
      • 2016-05-06
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 2018-05-04
      相关资源
      最近更新 更多