【问题标题】:How to validate numeric datatype length in JavaScript?如何在 JavaScript 中验证数字数据类型的长度?
【发布时间】:2016-06-14 12:57:59
【问题描述】:

我在 asp 中创建了一个数据网格。该网格链接到这个表,该表有几列数字数据类型 (22,8)。我将这些字段作为可编辑字段,因此我正在尝试验证其精度和规模。 目前我有这种适用于 varchar 数据类型的方法:

var colList =
[
  ["customer_name", 32],
  ["customer_address", 32],
  ["price",22] // this is numeric (22,8)
];

for (var i = 0; i < colList.length; ++i) {
  if (currentColumnName == colList[i][0].toString()) {
    if (currentRowKey.toString().length > colList[i][1]) {
      var error = (colList[i][0].toString() + " can only have a maximum of " + colList[i][1] + " characters.");
      alert(error);
      eventArgs.set_cancel(true);

    }
  }
}

我想用精度和比例来验证数字类型。在上面的代码中,我只能验证 22 的长度我不能只验证小数点后允许的 8 位数字。使用正则表达式可以解决我的问题,但我不擅长。

我尝试使用以下内容:

var regex = [
        ["total_amount"],
        ["price"],
        ["market_value"]

              ];
              for (var i = 0; i < regex.length; ++i) {
                  if (currentColumnName == regex[i].toString()) {

                      var re = /^(\d{0,22}\.\d{0,8})$/;
                      if (regex[i].match(re)) {
                          var error = (regex[i]+"is incorrect");
                          alert(error);
                          eventArgs.set_cancel(true);

                      }
                  }

但它仍然没有验证

【问题讨论】:

  • 您遇到了什么问题?代码是否抛出任何错误?
  • 看起来你应该使用一个对象。 {customer_name:32, customer_address:32, price:22}
  • 我在问题中更新了它。该代码可以很好地检查长度,但我正在尝试使用比例实现数字数据类型,并且我希望能够验证精度和比例,例如。 23.56565656 - 有效但 23.565656567 - 应该显示错误消息

标签: javascript asp.net regex validation


【解决方案1】:

为了验证具有精度和比例的数字数据,我使用 reg ex 作为我的第一种方法来处理长度而不是数字数据验证。

以下代码中的错误是 1. 我试图匹配列名而不是数据 2.“匹配”对我不起作用,所以我使用了“测试”

代码应该是这样的

var currentRowKey = [eventArgs.get_displayText()];
var regex = [
        ["total_amount"],
        ["price"],
        ["market_value"]

              ];
              for (var i = 0; i < regex.length; ++i) {
                  if (currentColumnName == regex[i].toString()) {

                      var re = /^(\d{0,22}\.\d{0,8})$/;
                      if (!re.test(currentRowKey)){
                          var error = (regex[i]+"is incorrect");
                          alert(error);
                          eventArgs.set_cancel(true);

                      }
                  }

reg ex:代码中的那个适用于那些只想处理十进制正数的人。

我想处理整数、+_ 数、十进制数和空值,所以我使用了以下内容:

var re = /^-?\d{0,22}(\.\d{0,8})?$/;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多