Đây là vấn đề của tôi:Xác thực số điện thoại java
Tạo hàm tạo cho số điện thoại được cung cấp dưới dạng xxx-xxx-xxxx hoặc xxx-xxxx cho số địa phương. Ném ngoại lệ nếu định dạng không hợp lệ.
Vì vậy, tôi đã suy nghĩ để xác thực nó bằng cách sử dụng một biểu thức chính quy, nhưng tôi không biết nếu tôi đang làm nó một cách chính xác. Ngoài ra tôi phải ném loại ngoại lệ nào? Tôi có cần tạo ngoại lệ của riêng mình không?
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;
}
Xin lỗi, có đây là bài tập về nhà. Đối với bài tập này, định dạng hợp lệ duy nhất là xxx-xxx-xxxx và xxx-xxxx, tất cả các định dạng khác (xxx) xxx-xxxx hoặc xxxxxxxxxx đều không hợp lệ trong trường hợp này.
Tôi muốn biết nếu biểu thức chính quy của tôi là đúng
là bài tập về nhà này? nên được gắn thẻ như vậy nếu vậy ... – Brabster
Câu hỏi rõ ràng: Bạn có chắc chắn rằng định dạng số điện thoại của bạn bắt được bất kỳ loại số điện thoại nào mà người dùng của bạn có thể muốn nhập không? Không có gì là bực bội hơn một hệ thống nửa thông minh mà từ chối chấp nhận dữ liệu hoàn toàn hợp lệ. (Ồ, và nếu đây chỉ là bài tập về nhà - đừng bận tâm.) – Tomalak
Hoàn toàn đồng ý với @Tomalak. Nếu đây là hệ thống sản xuất, câu trả lời đúng là loại bỏ bất kỳ ký tự nào không phải là số và xác thực số kết quả. –