Pour vérifier le numéro de téléphone (j'ai le numéro de téléphone type comme +918172014908) validation j'utilise le fichier libphonenumber.jar .. Il vérifie que le numéro de téléphone selon le pays est valide ou non. J'utilise ceci: -
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
PhoneNumber numberProto = phoneUtil.parse("phone_number", "");
phoneUtil.isValidNumber(numberProto) == true ? "valid" : "phone no not valid"
Son fonctionnement fonctionne bien..Mais ce fichier JAR prend un peu de mémoire .. Y at-il un autre moyen de vérifier la validation du format de numéro de téléphone sans libphonenumber.jar ??? pouvez-vous suggérer quelque chose ???
Cette réponse pourrait vous aider: https://stackoverflow.com/a/5959341
Pour valider une chaîne, utilisez
if (setNum.matches(regexStr))
where regexStr can be:
//matches numbers only
String regexStr = "^[0-9]*$"
//matches 10-digit numbers only
String regexStr = "^[0-9]{10}$"
//matches numbers and dashes, any order really.
String regexStr = "^[0-9\\-]*$"
//matches 9999999999, 1-999-999-9999 and 999-999-9999
String regexStr = "^(1\\-)?[0-9]{3}\\-?[0-9]{3}\\-?[0-9]{4}$"
Il existe une très longue expression régulière pour valider des téléphones aux États-Unis (7 à 10 chiffres, extensions autorisées, etc.). La source provient de cette réponse: Un regex complet pour la validation du numéro de téléphone
String regexStr = "^(?:(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$"
Essaye ça:
public static boolean isValidPhoneNo(CharSequence iPhoneNo) {
return !TextUtils.isEmpty(iPhoneNo) &&
Patterns.PHONE.matcher(iPhoneNo).matches();
}
Vous pouvez simplement utiliser une simple regex
. Dis que mon format de numéro de téléphone est 012-1234567
Vous pouvez utiliser \\d{3}-\\d{7}
pour les valider.
Par exemple:
String number = "012-1234567";
Pattern pattern = Pattern.compile("\\d{3}-\\d{7}");
Matcher matcher = pattern.matcher(number);
if (matcher.matches()) {
System.out.println("Phone Number Valid");
}
Essaye ça:
/**
* This method is used to set filter type of us phone number.
* @param phone
*/
public static void setFilterTypeOfUSPhoneNumber(final TextView phone){
InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String pattern = "0123456789()- ";
for (int i = start; i < end; i++) {
if (pattern.indexOf(source.charAt(i)) < 0 ||
source.length() > 14) {
return "";
}
}
return null;
}
};
phone.setFilters(new InputFilter[]{filter ,new InputFilter.LengthFilter(14)});
phone.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void afterTextChanged(Editable s) {
if(s.length() > 1){
if(s.length() < 5){
if(s.toString().indexOf("(") != 0 ||
checkSpecialCharsPositions(s.toString())){
String str = s.toString();
str = replaceStrings(str);
str = "("+str;
s.clear();
s.append(str);
phone.setText(s);
}
}
else if(s.length() < 10){
if(s.toString().indexOf("(") != 0 ||
s.toString().indexOf(")") != 4 ||
checkSpecialCharsPositions(s.toString())){
String str = s.toString();
str = replaceStrings(str);
str = "("+str.substring(0, 3)+") "+str.substring(3);
s.clear();
s.append(str);
phone.setText(s);
}
}
else {
if(s.toString().indexOf("(") != 0 ||
s.toString().indexOf(")") != 4 ||
s.toString().indexOf("-") != 9 ||
checkSpecialCharsPositions(s.toString())){
String str = s.toString();
str = replaceStrings(str);
str = "("+str.substring(0, 3)+") "+str.substring(3,6) + "-" + str.substring(6);
s.clear();
s.append(str);
phone.setText(s);
}
}
}
Selection.setSelection(s,s.length());
}
private String replaceStrings(String str){
str = str.replace("(", "");
str = str.replace(")", "");
str = str.replace(" ", "");
str = str.replace("-", "");
return str;
}
private boolean checkSpecialCharsPositions(String str){
return (str.indexOf("(") != str.lastIndexOf("(") ||
str.indexOf(")") != str.lastIndexOf(")") ||
str.indexOf("-") != str.lastIndexOf("-"));
}
});
}