手机号码的常规验证表达式

时间:2014-01-18 14:11:56

标签: asp.net regex

如何为巴基斯坦手机号码执行常规验证表达式? 巴基斯坦手机号码示例:03339961128,03456831234,03215769989,03139981234

<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
                                runat="server" 
                                ValidationExpression="" 
                                ControlToValidate="textboxph" 
                                ErrorMessage="Enter Valid Number!">  
</asp:RegularExpressionValidator>

我应该在验证表达式中写什么?

3 个答案:

答案 0 :(得分:0)

使用正则表达式验证电话号码通常不是理想的方法,并且确实将您的应用程序绑定到特定格式。使用库来验证电话号码比较容易,例如libphonenumber。它包含服务器端和Javascript函数,用于验证,格式化和获取有关输入的电话号码的信息。使用这样的库有很多好处:

  • 它将忽略人们经常输入的任何格式(例如空格,括号,连字符)
  • 可以将数字格式化为您所在国家/地区的首选显示格式
  • 它可以告诉您有关输入的号码类型的信息

但是,如果你想要一个简单的表达式,使用你已经到达的例子,我会选择^03\d{9}$(假设巴基斯坦手机号码从03开始,有11位数字。)

答案 1 :(得分:0)

您还可以通过简单的if-else检查验证手机号码,您还可以验证用户是否输入了正确的Mobilink,Ufone,Telenor,Warid等网络代码。在此功能中,只有11位数或13位数可以接受 例如

03463988574(VALID) +923332214561(有效)

08953055215(无效) +927415822875(无效)

您还可以根据(PK)手机号码

的要求更改其功能
 public static bool CheckMobileNumberFormat(string cellnumber)
        {
            bool ValidateNumber = false;
            IEnumerable<string> codes = new List<string> { "331", "332","333", "334","335", "336","337", "338",  //Ufone
                                                                   "300", "301","302", "303","304", "305","306", "307",  //Mobilink
                                                                   "321", "322","323", "324","325", "326","327", "328",  //Warid   
                                                                   "341", "342","343", "344","348","345", "346","347", "347","348"}; //Telenor

            if (cellnumber.Length == 11)
            {
                if (cellnumber[0] == '0')
                {
                    //string originalnumber=cellnumber;
                    string checkcode = cellnumber.Substring(1, 3);

                    bool match = codes.Contains(checkcode);
                    if (match == true)
                    {
                        ValidateNumber = true;

                    }
                    else
                    {
                        ValidateNumber = false;
                    }

                }
                else
                {
                    ValidateNumber = false;
                }
            }

            else if(cellnumber.Length ==13)
            {
                if (cellnumber[0] == '+' && cellnumber[1]=='9' && cellnumber[2]=='2')
                {
                    string originalnumber = cellnumber;
                    string checkcode = cellnumber.Substring(3, 3);

                    bool match = codes.Contains(checkcode);
                    if (match == true)
                    {
                        ValidateNumber = true;

                    }
                    else
                    {
                        ValidateNumber = false;
                    }

                }
                else
                {
                    ValidateNumber = false;
                }

            }
            return ValidateNumber;
        }

// ***点击按钮点击****

string input = textBox1.Text;
            bool result = CheckMobileNumberFormat(input);
            if (result == true)
            {
                MessageBox.Show("Valid #");
            }
            else
            {
                MessageBox.Show("InValid #");
            }

答案 2 :(得分:-1)

您可以使用此验证程序表达式验证所有巴基斯坦手机号码 ^((+ 92)|(0092)) - {0,1} \ d {3} - {0,1} \ d {7} $ | ^ \ d {11} $ | ^ \ d {4} - \ d {7} $