NANP 电话号码的 jQuery 验证

标签 jquery validation phone-number

我正在尝试验证我的表单。我的表单中有一个电话号码字段。用户插入电话号码,然后进行验证和格式化。我在 StackOverflow 上阅读了很多其他类似的问题,并通过其他地方的搜索,但我被困住了。表单一直提示我插入的有效数字无效。

我只关心 NANP 号码,并且我了解 NANP 号码的格式如下:NXX-NXX-XXXX,其中 N 只能是数字 [2-9],X 可以为[0-9]。我不需要国家/地区代码。

这是我的代码:

function validatePhone(){
    var error = 1;

    var hasError = false;
    var $this = $(this);
    var regex1 = /^(\()?[2-9]{1}\d{2}(\))?(-|\s)?[2-9]{1}\d{2}(-|\s)\d{4}$/;

    phone = $(this).val();
    phone = phone.replace(/[^0-9]/g,'');        
    if(!regex1.test(phone)){
        hasError = true;
        $this.css('background-color','#FFEDEF');
    }   
    else{
        area = phone.substring(0,3);
        prefix = phone.substring(3,6);
        line = phone.substring(6);
        $this.val('(' + area + ') ' + prefix + '-' + line);
        $this.css('background-color','#FFFFFF');    
    }

这个想法是,无论我是否插入 8012559553、(801)2559553、(801)255-9553、801-255-9553 或类似的内容,它都会被验证和格式化,如下所示:(801) 255-9553 。但同样,由于某种原因,表单继续说我插入的任何数字都是无效的,无论它是否有效。这是我正在使用的代码,它可以工作,但不符合 NANP 格式:

function validatePhone(){
    var error = 1;

    var hasError = false;
    var $this = $(this);
    phone = $(this).val();
    phone = phone.replace(/[^0-9]/g,'');        
    if(phone.length != 10){
            hasError = true;
            $this.css('background-color','#FFEDEF');
    }   
    else{
            area = phone.substring(0,3);
            prefix = phone.substring(3,6);
            line = phone.substring(6);
            $this.val('(' + area + ') ' + prefix + '-' + line);
            $this.css('background-color','#FFFFFF');    
    }

所以,我在实现数字的正则表达式测试以确保数字是真实的,然后正确设置数字格式时遇到了麻烦......有什么想法吗?

最佳答案

这是我的不是很严格但很好的正则表达式:

/^\D*([2-9]\d{2}\D*){2}(\d{2}\D*){2}\D*$/

它接受:

  • (235)-546-42-09
  • 452-845-12-12
  • [933]-323-34-53
  • 222-435-0903
  • 222-4350903
  • 2224350903
  • (222) -- 785 -- 12 -- 76

它不接受:

  • 111-342-45-45
  • 234-111-50-78
  • 222-222-222-2(您可以简单地修改 RegExp 来删除它)

关于NANP 电话号码的 jQuery 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6915650/

相关文章:

jquery - 使用千位分隔符和 2 位小数格式化数字

grails - Grails:如何检查是否已将经过字段验证的字段添加到其他Domain类?

php - Javascript 表单验证不起作用?

java - 检索电话号码的最佳方法?

javascript - 克隆/复制 DOM 元素功能无法正常工作

javascript - 如何通过现有数组标签明智地收集/制作新数组?

jquery - 将 Json 数据传递到 MVC Razor View

validation - 向外部系统发送请求之前的其他验证逻辑

ios - 使用Core电话的iPhone手机号码

html - 如何在 tel : URI? 中包含扩展