如何在JavaScript中验证数值数据类型的长度?

时间:2016-06-14 12:57:59

标签: javascript asp.net regex validation

我在asp中创建了一个datagrid。网格链接到这个表,它有几列数字数据类型(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);

                      }
                  }

但它仍未验证

1 个答案:

答案 0 :(得分:0)

为了精确和规模地验证数值数据,我使用了reg ex作为我的第一个方法来处理长度而不是数值数据验证。

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

代码应该像

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})?$/;