use*_*514 6 java regex validation
这是我的问题:
为给定字符串的电话号码创建一个构造函数,其形式为xxx-xxx-xxxx或xxx-xxxx,表示本地号码.如果格式无效,则抛出异常.
所以我想用正则表达式验证它,但我不知道我是否正确地做了.我还要扔什么样的例外?我需要创建自己的例外吗?
public TelephoneNumber(String aString){
if(isPhoneNumberValid(aString)==true){
StringTokenizer tokens = new StringTokenizer("-");
if(tokens.countTokens()==3){
areaCode = Integer.parseInt(tokens.nextToken());
exchangeCode = Integer.parseInt(tokens.nextToken());
number = Integer.parseInt(tokens.nextToken());
}
else if(tokens.countTokens()==2){
exchangeCode = Integer.parseInt(tokens.nextToken());
number = Integer.parseInt(tokens.nextToken());
}
else{
//throw an excemption here
}
}
}
public static boolean isPhoneNumberValid(String phoneNumber){
boolean isValid = false;
//Initialize reg ex for phone number.
String expression = "(\\d{3})(\\[-])(\\d{4})$";
CharSequence inputStr = phoneNumber;
Pattern pattern = Pattern.compile(expression);
Matcher matcher = pattern.matcher(inputStr);
if(matcher.matches()){
isValid = true;
}
return isValid;
}
Run Code Online (Sandbox Code Playgroud)
对不起,是的,这是功课.对于此分配,唯一有效的格式是xxx-xxx-xxxx和xxx-xxxx,在这种情况下,所有其他格式(xxx)xxx-xxxx或xxxxxxxxxx均无效.
我想知道我的正则表达式是否正确
所以我想用正则表达式验证它,但我不知道我是否正确地做了.
它确实看起来过于复杂.此外,匹配xxx-xxx-xxxx或数字xxx-xxxx在哪里x可以更好地完成"(\\d{3}-){1,2}\\d{4}".要了解有关正则表达式的更多信息,我建议您浏览http://regular-expressions.info.
我还要扔什么样的例外?我需要创建自己的例外吗?
A ValidatorException似乎很直截了当.
public static void isPhoneNumberValid(String phoneNumber) throws ValidatorException {
if (!phoneNumber.matches(regex)) {
throws ValidatorException("Invalid phone number");
}
}
Run Code Online (Sandbox Code Playgroud)
如果你不想出于某些原因自己创建一个,那么我可能会选择IllegalArgumentException,但我仍然不建议这样做.
也就是说,此验证当然不包括国际和/或外部电话号码.除非这是真正的功课,否则我建议重新考虑验证.
| 归档时间: |
|
| 查看次数: |
31965 次 |
| 最近记录: |