2012-09-16 187 views
1

下面是我目前的代码。我需要确保它始终具有十位数的完整电话号码。有没有人有适当的正则表达式代码? “美国号”jquery验证电话号码

"phone": { 
    // credit: jquery.h5validate.js/orefalo 
    "regex": /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, 
    "alertText": "* Invalid phone number" 
} 
+0

你似乎忘记了问一个问题。 – verdesmarald

回答

1
<script> 
    $(document).ready(function(){ 
    jQuery.validator.addMethod("phoneUS", function(phone_number, element) { 
    phone_number = phone_number.replace(/\s+/g, ""); 
    return this.optional(element) || phone_number.length > 9 && 
     phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
}, "Please specify a valid phone number"); 

$("#myform").validate({ 
    rules: { 
    field: { 
     required: true, 
     phoneUS: true 
    } 
    } 
}); 
    }); 
    </script> 
1

请参阅:A comprehensive regex for phone number validation更全面的答案。但是,我认为这是你想要的正则表达式:

^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$ 
+0

没有工作。同样的结果。 –

+0

究竟发生了什么? –

+0

它只接受1个号码。所以只要有人填写表格并输入一位数字,就可以让他们前进。我想确保他们输入完整的10位数的美国电话号码。 –