【问题标题】:regEx is allowing letters inbetween numbers正则表达式允许数字之间的字母
【发布时间】:2013-06-19 10:34:25
【问题描述】:

我正在尝试使用 javascript 对表单的电话号码字段进行一些验证。

我从另一个网站获取了一些正则表达式,它几乎可以工作。

但如果您在数字之间放置字母,例如“1234abc5678”,则 javascript 确实允许提交表单

这是我的验证码:

if (telephone==null || telephone=="")
  {
  alert("Telephone must be filled out");
  return false;
  }

var regexp = telephone.replace(/^[\s()+-]*([0-9][\s()+-]*){6,20}$/);
if (telephone.match(regexp))
  {
  alert("Telephone number is not valid");
  return false;
  }

有人可以帮我处理这段代码并告诉我出了什么问题

经过 1 次测试后,我发现如果我在开头添加 +,它允许在数字中包含字母。我确实需要在开头允许 + 但显然不允许字母。

我需要的输出是长度在 6 到 20 个字符之间的电话号码,如果应该输入的话,它还允许在开头加上 +。任何其他字符都应该是无效的

【问题讨论】:

  • 您认为有效的电话号码是什么(期望的输出是什么)?这会有所帮助。
  • 编辑了问题以适应它:)

标签: php javascript regex validation


【解决方案1】:
if (telephone==null || telephone=="") {
    alert("Telephone must be filled out");
    return false;
}

var regexp = /^[\s()+-]*([0-9][\s()+-]*){6,20}$/;
if (! telephone.match(regexp)) {
    alert("Telephone number is not valid");
    return false;
}

【讨论】:

    【解决方案2】:

    replace 并没有按照你的想法去做。只需使用

    var regexp = /^[\s()+-]*([0-9][\s()+-]*){6,20}$/;
    

    你应该没事的......

    【讨论】:

    • 我也相信你想使用“不是真的”,因为如果它匹配正则表达式,电话号码是有效的。 if (!telephone.match(regexp)) {
    • @Branden Martin 就是这样!现在就像一个魅力,非常感谢你:)把它放在一个答案中,我会接受。谢谢你也马萨我也接受了你的建议
    【解决方案3】:

    你为什么打电话给String#replace?你只需要像这样调用String#match(re)

    var regex = /^[\s()+-]*([0-9][\s()+-]*){6,20}$/;
    if (telephone.match(regex))
      console.log("Telephone number is valid");
    else
      console.log("Telephone number is not valid");
    

    现场演示:http://ideone.com/urCGLV

    【讨论】:

      【解决方案4】:

      使用 JavaScript 验证电话号码

               var s ="123456";
              var filternumber = /^([0-9]+)$/;
              if((filternumber.test(s)==false)){
                 alert ("not valid number");                
              }else {                               
                alert ("valid number");  
              }      
      

      【讨论】:

        【解决方案5】:

        你需要测试

        var regexp = telephone.replace(/^+?\d{6,20}$/);
        if (!regexp.test(telephone))   {
            alert("Telephone number is not valid");
            return false;
        }
        

        【讨论】:

        • 好的,我按照你的建议做了,但问题仍然存在。完全没有变化:/
        猜你喜欢
        • 1970-01-01
        • 2011-12-29
        • 2011-05-19
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多