日期:2014-05-17  浏览次数:20450 次

奇怪的正则表达式
C# code
if (Regex.IsMatch(id, @"^\d{1,8}$", RegexOptions.IgnoreCase))
                        {
                            _id = int.Parse(id);
                            userPo = userBlo.Login(_id, pwd, out status);
                        }
                        else if (Regex.IsMatch(id, @"^((13)|(14)|(15)|(18))\d{9}$", RegexOptions.IgnoreCase))
                        {
                            userPo = userBlo.LoginByPhone(id , pwd, out status);
                        }
                        else if (Regex.IsMatch(id, @"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", RegexOptions.IgnoreCase))
                        {
                            userPo = userBlo.LoginByEmail(  id  , pwd, out status);
                        }


登录有三种方式,id号、手机号、邮箱
用正则匹配,验证结果很奇怪,用例:id=“181945?”

------解决方案--------------------
id=“181945?”应该会匹配第一个if条件,以数字开头和结尾,1到8个数字
------解决方案--------------------
第一个if,测试正常