如何使用不同格式的国家/地区代码验证电话号码。我正在使用有效的phonenumber lengh mehod,并在此使用正则表达式进行电话号码验证,如
public bool IsValidPhoneNumberLength(string phoneNumber)
{
bool isValidPhone = false;
string pattern = @"^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
bool result = isValidPhone = regex.IsMatch(phoneNumber);
return result;
}
我的单元测试用例如下所述
Assert.AreEqual(true, company1.IsValidPhoneNumberLength("2345678900"));
Assert.AreEqual(true, company1.IsValidPhoneNumberLength("0019885021320"));
Assert.AreEqual(true, company1.IsValidPhoneNumberLength("(212)897-0067"));
Assert.AreEqual(true, company1.IsValidPhoneNumberLength("1(212)897-0067"));
Assert.AreEqual(true, company1.IsValidPhoneNumberLength("001(212)897-0067"));
Assert.AreEqual(true, company1.IsValidPhoneNumberLength("001.212.897.0067"));
Assert.AreEqual(true, company1.IsValidPhoneNumberLength("001(212)897.00671234"));
Assert.AreEqual(true, company1.IsValidPhoneNumberLength("001 212 897 0067"));
单元测试失败,测试方法中提到的一些条件。
答案 0 :(得分:0)
据我所知,此代码存在两个问题:
您正在使用regexp来验证复杂的输入字符串。正则表达式很强大但它有它的极限。因此,通过使用regexp 解析输入到字段中然后验证字段(内容,长度等),您可能会更好。
此外,有时最好忽略任何你不理解的角色,而不是试图说“如果它在这里和这里,那就好了。”因此,如果您只是从输入中删除了非数字的任何内容,然后只检查了长度,那么任务将变得更加简单(对客户来说更加愉快)。
剥离会将数千个案例合并为一个。
您在单元测试中执行多个断言。这真是太糟了。如果多个断言失败,您将只看到第一个断言。其他的可以为您提供有关上次更改可能出错的重要信息。