奇怪的正则表达式
- 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,测试正常