【问题标题】:JS: regex for numbers and spaces?JS:数字和空格的正则表达式?
【发布时间】:2012-10-25 03:54:05
【问题描述】:

我正在使用happyJS 并使用下面的正则表达式进行电话验证

phone: function (val) {
        return /^(?:[0-9]+$)/.test(val);
    }

但是这只允许数字。我希望用户能够像输入空格一样

238 238 45383

知道为什么return /^(?:[0-9 ]+$)/.test(val); 不成功吗?

【问题讨论】:

  • /^(?:[0-9 ]+$)/.test("238 238 45383"); 返回真。似乎工作。
  • @raina77ow 好吧,你完全正确!对不起。我刚刚发现有一些服务器端缓存不会重新加载我的脚本文件。我测试了它100次,但它不会显示出任何效果。现在一切似乎都很好。是的,你说得对 - 我提供的代码运行良好。

标签: javascript regex validation zepto happy


【解决方案1】:

这是我建议的解决方案:

/^(?=.*\d)[\d ]+$/.test(val)

(?=.*\d) 断言输入中至少有一位数字。否则,只有空格的输入可以匹配。

请注意,这不会对位数(仅确保至少有 1 位)或空格应出现在输入中的位置施加任何限制。

【讨论】:

  • @raina77ow:对于?:,我猜这不是很重要。我只是模仿OP的代码。而且您的测试完全是错误的,并且比 OP 的解决方案更糟糕。 /[0-9]/ 将检查是否存在数字,/^[0-9 ]/ 将检查字符串开头是否存在数字或空格。即使你在后面加上+,它们仍然是错误的。
  • @nhahtdh 当然应该是/[^0-9 ]/。关键是在开发中构建(和维护)两个简单的东西比一个复杂的东西更容易一起工作 - 正则表达式(通常)也不例外。
  • @raina77ow:我理解你写那个正则表达式的意图(逻辑不是测试结果),但是空字符串或只有空格的字符串将通过测试。
  • 空字符串会通过/[0-9]/ && ! /[^0-9 ]/ 测试吗?
  • @raina77ow:我想我误解了您的原始评论(已删除)。我明白你现在说的话,我想你可以自己写答案。
【解决方案2】:

试试

phone: function (val) {
    return /^(\s*[0-9]+\s*)+$/.test(val);
}

必须至少存在一个数字才能使上述成功,但请查看 regex example here

【讨论】:

  • 大声笑这强制一个空间存在,而不是允许可选空间。改用这个: return /^([0-9\s)+/.test(val);
  • @AndyLorenz 请检查您的正则表达式,因为它实际上不起作用:)
  • 很好发现:return /^([0-9\s]+)$/.test(val);
【解决方案3】:

试试

/^[\d ]*$/.test("238 238 45383")

console.log(/^[\d ]*$/.test("238 238 45383"));

【讨论】:

    【解决方案4】:

    我个人使用此代码并且它可以正常工作:

    function validateMobile(mob) 
    { 
         var re = /^09[0-9]{9}$/
         if(mob.match(re))
             return true;
         else
            return false; 
    }
    

    【讨论】:

    • 电话号码格式因国家/地区而异。正则表达式中的前缀 09 已经对数字格式做了一些假设。
    【解决方案5】:

    您可以尝试以下正则表达式来检查数字和空格。

    function isTextAndNumberSpaceOnly(text) {
        var regex = /^[0-9 ]+$/;
        if (regex.test(text)) {
            return true;
        } else {
            return false;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 2010-09-15
      • 2022-01-14
      相关资源
      最近更新 更多