0

任何人都可以给我正则表达式以验证号码是

  1. 最少 6 位或最多 15 位数字
  2. 它可能是包含(),-,#(如果只有在第一个位置后跟数字),/,+

例如。

(079) 22861851
(079)22861851
079 22861851
22861851
079-26408300 / 8200
079 264 083 00 
9429527462
+919427957462
 #9427957462

我想用一个正则表达式公式来验证上面的所有数字是否正确……有人可以帮我吗?

我试过这个

var phone_patternIndia = /^((\+){0,1}91(\s){0,1}(\-){0,1}(\s){0,1}){0,1}\d{2}(\s){0,1}(\-){0,1}(\s){0,1}[1-9]{1}[0-9]{7}$/;


var phone_patternUsa=/^([0-9]( |-)?)?(\(?[0-9]{3}\)?|[0-9]{3})( |-)?([0-9]{3}( |-)?[0-9]{4}|[a-zA-Z0-9]{7})$/;

var phone_patternUsa1=/^[\\(]{0,1}([0-9]){3}[\\)]{0,1}[ ]?([^0-1]){1}([0-9]){2}[ ]?[-]?[ ]?([0-9]){4}[ ]*((x){0,1}([0-9]){1,5}){0,1}$/;

但它并非一直有效..所以决定采用其他模式..

var phone_pattern=/^((\d{3}-?|(\d{3}))\s*\d{7}($|\s*/\s*\d{4}$)|\ d{3}\s\d{3}\s\d{3}\s\d{2}|+\d{12}|#\d{10})$/;

if (phone_pattern.test(personal_phone))
        {

            $("#restErrorpersonalphone").html('');
            $("#personal_phone").removeClass('borderColor');

        } else {
            $("#restErrorpersonalphone").html('Please enter valid phone number');
            $("#personal_phone").addClass('borderColor');
            flag = false;
        }

它总是处于其他状态

4

2 回答 2

2

我强烈鼓励将其分解为较小的正则表达式并单独测试,或者剥离字符,然后进行测试,但只是我头脑中的一个粗略样本,应该有助于解决您的问题(未经测试,仅涵盖您列出的示例)。 ..

(079) 22861851 => /^(\d{3}-?|\(\d{3}\))?\s*\d{7}(\s*\/\s*\d{4})?$/
(079)22861851  => same...
079 22861851   => same...
22861851       => same...
079-26408300 / 8200 => same...
079 264 083 00 => /^\d{3}\s\d{3}\s\d{3}\s\d{2}$/
9429527462     => same as first regex
+919427957462  => \^\+\d{12}$/
 #9427957462   => /^#\d{10}$/

所以,把它们结合起来......

/^(\d{3}-?|\(\d{3}\))?\s*\d{7}($|\s*\/\s*\d{4}$)|\d{3}\s\d{3}\s\d{3}\s\d{2}|\+\d{12}|#\d{10})$/
于 2013-02-07T05:41:39.990 回答
1

解决问题的最简单方法是消除所有非数字并仅使用数字的长度进行验证。

var digits=personal_phone.replace(/[^0-9]/g,'');
var isValid=false;
if (digits && digits.length>=10) {
    // You can fine-tune whether it starts with 1, matches an area code, etc here
    isValid=true;
}
于 2013-02-07T06:09:47.590 回答