日期:2014-05-18  浏览次数:20753 次

C#正则表达中+号使用中遇到的问题
最近用正则表达式验证手机账号,private static Regex RegPhone = new Regex("^(+86|86)?0{0,1}(13[0-9]|15[7-9]|153|156|18[7-9])[0-9]{8}$");若没有(+86|86)?,该正则表达式正确;若只有(86)?同样正确。但当有+86时报错。给+86加上\改为\+86时,生成时报错,若加两个\\变为\\+86生成时不报错,但是正确的号码如+8613956686246无法通过。请问,应该怎么写这个正则表达式?

------解决方案--------------------
C# code

            Regex RegPhone = new Regex("^(?:\\+?86)?0{0,1}(13[0-9]|15[7-9]|153|156|18[7-9])[0-9]{8}$");
            string str = "+8613956686246";
            Console.WriteLine(RegPhone.IsMatch(str));
//true

------解决方案--------------------
new Regex(@"^((\+86)|(86))?0{0,1}(13[0-9]|15[7-9]|153|156|18[7-9])[0-9]{8}$", RegexOptions.IgnoreCase | RegexOptions.Multiline)