How do I check if a phone number is valid or not? It is up to length 13 (including character +
in front).
How do I do that?
I tried this:
String regexStr = "^[0-9]$";
String number=entered_number.getText().toString();
if(entered_number.getText().toString().length()<10 || number.length()>13 || number.matches(regexStr)==false ) {
Toast.makeText(MyDialog.this,"Please enter "+"\n"+" valid phone number",Toast.LENGTH_SHORT).show();
// am_checked=0;
}`
And I also tried this:
public boolean isValidPhoneNumber(String number)
{
for (char c : number.toCharArray())
{
if (!VALID_CHARS.contains(c))
{
return false;
}
}
// All characters were valid
return true;
}
Both are not working.
Input type: + sign to be accepted and from 0-9 numbers and length b/w 10-13 and should not accept other characters
You can use
PhoneNumberUtils
if your phone format is one of the described formats. If none of the utility function match your needs, use regular experssions.you can also check validation of phone number as
Given the rules you specified:
(and also incorporating the min length of 10 in your code)
You're going to want a regex that looks like this:
With the min and max lengths encoded in the regex, you can drop those conditions from your
if()
block.Off topic: I'd suggest that a range of 10 - 13 is too limiting for an international phone number field; you're almost certain to find valid numbers that are both longer and shorter than this. I'd suggest a range of 8 - 20 to be safe.
[EDIT] OP states the above regex doesn't work due to the escape sequence. Not sure why, but an alternative would be:
[EDIT 2] OP now adds that the
+
sign should be optional. In this case, the regex needs a question mark after the+
, so the example above would now look like this:To validate phone numbers for a specific region in Android, use libPhoneNumber from Google, and the following code as an example:
Use
isGlobalPhoneNumber()
method ofPhoneNumberUtils
to detect whether a number is valid phone number or not.Example
The result of first print statement is true while the result of second is false because the second phone number contains
f
.You can use android's inbuilt
Patterns
: