【问题标题】:Check only numbers used in input field仅检查输入字段中使用的数字
【发布时间】:2015-12-01 15:31:40
【问题描述】:

我在验证函数中有一个简单的 if 语句,用于检查字段中至少使用了 10 个数字

function verfiyFields() {
    var flag = true;

    var number = $atj('#interested-number-form');


    if(number.val().replace(/\s+/g, '').length < 10){
        number.parent().prepend('<p class="form-error">Please enter phone number</p>');
        fadeOut();
        flag = false;
    }

    return flag;
}

我如何才能检查是否只使用了数字。

【问题讨论】:

  • 如果您使用的是 html5,为什么不为您的字段使用 'input type = number' 属性?
  • 我需要能够在里面放空格

标签: javascript jquery regex input phone-number


【解决方案1】:

您可以使用.match(/^\d+$/) 来检查是否只有数字。

var value = number.val().replace(/\s+/g, '');
if (value.length >= 10 && value.match(/^\d+$/)) {
  // ..
}

您还可以使用正则表达式/^\d{10,}$/ 来检查是否至少有10 位数字,并避免检查length 属性:

var value = number.val().replace(/\s+/g, '')
if (value.match(/^\d{10,}$/)) {
  // ..
}

作为旁注,您也可以使用pattern attribute

<form>
  <input type="text" pattern="^\d{10,}$" />
  <input type="submit" />
</form>

【讨论】:

  • 这些功能似乎都不适合我。我已经用我正在使用的更多代码更新了这个问题
  • @ttmt 您的标题暗示您正在尝试检查该字段是否包含位数字。你只是想数位数吗?像这样? jsfiddle.net/yacka3zj也许我误解了这个问题..
  • 这是表单中的电话号码字段,因此我想验证至少有 10 个数字不包括空格或其他不是数字的字符。我只想要数字和空格,并且至少有 10 个数字。
【解决方案2】:
function verfiyFields() {
  var reg = /^\D*(?:\d\D*){10}$/;
  var number = $atj('#interested-number-form');

  var flag = reg.test(number.val())

  if (!(flag)) {
    number.parent().append('<p class="form-error">Please enter a valid 10 digit phone number</p>');
  }

  return flag;
}

使用 RegExp.test(str) 检查以确保不包括所有非数字字符的字段长度为 10。RegExp.test 返回真或假值,因此这可以是您返回的标志。

RegExp.test(str) 文档

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

演示: http://jsfiddle.net/SeanWessell/1v6vnath/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2012-09-30
    • 2021-05-18
    • 2012-06-07
    • 2010-11-22
    相关资源
    最近更新 更多