Checking phone number in java

I want to check the phone number this way: -

The field should allow the user to enter characters and auto correct. Thus, the entry "+ 1-908-528-5656" will not generate an error for the user, it will simply change to "19085285656".

I also want the number to range from 9 to 11.

I also tried with the below code but didn't come to a final solution:

 final String PHONE_REGEX = "^\\+([0-9\\-]?){9,11}[0-9]$";
 final Pattern pattern = Pattern.compile(PHONE_REGEX);
 String phone = "+1-908-528-5656";      
 phone=phone.replaceAll("[\\-\\+]", "");
 System.out.println(phone);
 final Matcher matcher = pattern.matcher(phone);
 System.out.println(matcher.matches()); 

      

+3


source to share


8 answers


You can use simple String.matches(regex)

to test any string against a regex pattern instead of using the Pattern

and classes Matcher

.

Example:

boolean isValid = phoneString.matches(regexPattern);

      

Find more examples

Here's a regex pattern to match your input string:



\+\d(-\d{3}){2}-\d{4}

      

Online demo


Better to use Spring validation annotation for validation.

Example

+6


source


// The Regex not validate mobile number, which is in internation format.
// The Following code work for me. 
// I have use libphonenumber library to validate Number from below link.
// http://repo1.maven.org/maven2/com/googlecode/libphonenumber/libphonenumber/8.0.1/
//  https://github.com/googlei18n/libphonenumber
// Here, is my source code.

 public boolean isMobileNumberValid(String phoneNumber)
    {
        boolean isValid = false;

        // Use the libphonenumber library to validate Number
        PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
        Phonenumber.PhoneNumber swissNumberProto =null ;
        try {
            swissNumberProto = phoneUtil.parse(phoneNumber, "CH");
        } catch (NumberParseException e) {
            System.err.println("NumberParseException was thrown: " + e.toString());
        }

        if(phoneUtil.isValidNumber(swissNumberProto))
        {
            isValid = true;
        }

        // The Library failed to validate number if it contains - sign
        // thus use regex to validate Mobile Number.
        String regex = "[0-9*#+() -]*";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(phoneNumber);

        if (matcher.matches()) {
            isValid = true;
        }
        return isValid;
    }

      



+1


source


Assuming you want to optimize (which is what your comment suggests).

Like this? ("0" means an exception if they give complete garbage without any single digit).

 int parse(String phone){
     int num = Integer.parseInt("0"+phone.replaceAll("[^0-9]",""));
     return 100000000<=num&&num<100000000000?num:-1;
 }

      

0


source


Assuming your input field accepts any character and you just want numbers.

 String phone = "+1-908-528-5656";
 phone=phone.replaceAll("[\\D]","");
 if(phone.length()>=9 || phone.length()<=11)
   System.out.println(phone);

      

0


source


I'm not sure, but stripping out the garbage parentheses, spaces and hyphens if you agree with ^ ((\ + [1-9]? [0-9]) | 0)? [7-9] [0-9] {9} $ , you can confirm your mobile phone number

private static final String PHONE_NUMBER_GARBAGE_REGEX = "[()\\s-]+";
private static final String PHONE_NUMBER_REGEX = "^((\\+[1-9]?[0-9])|0)?[7-9][0-9]{9}$";
private static final Pattern PHONE_NUMBER_PATTERN = Pattern.compile(PHONE_NUMBER_REGEX);

public static boolean validatePhoneNumber(String phoneNumber) {
    return phoneNumber != null && PHONE_NUMBER_PATTERN.matcher(phoneNumber.replaceAll(PHONE_NUMBER_GARBAGE_REGEX, "")).matches();
}

      

0


source


We can use String.matches(String regex)

1 to validate phone numbers with java.

Sample code snippet

package regex;

public class Phone {
    private static boolean isValid(String s) {
        String regex = "\\d{3}-\\d{3}-\\d{4}"; // XXX-XXX-XXXX
        return s.matches(regex);
    }

    public static void main(String[] args) {
        System.out.println(isValid("123-456-7890"));
    }

}

      

PS In the regex pattern, we use extra "\" for escaping when used in java. (Try using "\ d {3} - \ d {3} - \ d {4}" in your java program, you get an error.

0


source


One simple and straightforward regex usage for Java validation:

public static final String PHONE_VERIFICATION = "^[+0-9-\\(\\)\\s]*{6,14}$";

private static Pattern p;
private static Matcher m;

public static void main(String[] args)
{
    //Phone validation
    p = Pattern.compile(PHONE_VERIFICATION);
    m = p.matcher("+1 212-788-8609");
    boolean isPhoneValid = m.matches();

    if(!isPhoneValid)
    {
        System.out.println("The Phone number is NOT valid!");
        return;
    }
    System.out.println("The Phone number is valid!");
}

      

0


source


I have tested one regex for this combination of phone numbers

(294) 784-4554
(247) 784 4554
(124)-784 4783 
(124)-784-4783
(124) 784-4783
+1(202)555-0138

      

THIS REGEX SURELY WILL WORK FOR ALL US NUMBERS

\d{10}|(?:\d{3}-){2}\d{4}|\(\d{3}\)\d{3}-?\d{4}|\(\d{3}\)-\d{3}-?\d{4}|\(\d{3}\) \d{3} ?\d{4}|\(\d{3}\)-\d{3} ?\d{4}|\(\d{3}\) \d{3}-?\d{4}

      

0


source







All Articles