Quantcast
Channel: Kushal's Java Blog | Software Engineering Blog » Java Regular Expressions - Kushal's Java Blog | Software Engineering Blog
Viewing all articles
Browse latest Browse all 12

Programmatically Validating US and Canada Phone Numbers Using Regular Expressions In Java

$
0
0

The following java program checks for the validity of US and Canada phone number formats using regular expression. The regular expression used here can handle the following rules:

  • The starting character may be ‘+’ but is optional
  • If the country code is used, it can be either 0 or 1 and is optional
  • Various codes (country, area) might be separated with ‘-’ or ‘.’ but is optional
  • Area code should not start with 0 but may be optionally enclosed in round brackets
package com.kushal.tools;
/**
 * @author Kushal Paudyal
 * Last Modified on 05/11/2011
 * Java Regular Expression to Validate US and Canada phone numbers.
 */
import java.util.regex.Pattern;

public class RegexUSAndCandaPhoneNumberValidator{
	/**
	 * REGEX IS: ^[+]?[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$
	 * Escape Sequences are added in the following String for back slash (\)
	 */
	static String phoneValidationUSCandaRegex =
		"^[+]?[01]?[- .]?(\\([2-9]\\d{2}\\)|[2-9]\\d{2})[- .]?\\d{3}[- .]?\\d{4}$";

	/**
	 * This method compares the parameter string against the US Phone number
	 * regex and returns true if the pattern is matched - meaning the phone
	 * number is valid.
	 *
	 * The regular expression used here can handle the following rules:
	 * The starting character may be '+' but is optional
	 * If the country code is used, it can be either 0 or 1 and is optional
	 * Various codes (country, area) might be separated with '-' or '.' but is optional
	 * Area code should not start with 0 but may be optionally enclosed in round brackets
	 *
	 */
	public static boolean isAValidUSPhoneNumber(String str) {
		return Pattern.matches(phoneValidationUSCandaRegex, str);

	}

	public static void main (String [] args ) {
		String [] phoneNumbersToValidate={"2-309-778-4234",
										  "1-309-778-4423",
										  "309-778-4235",
										  "3097784234",
										  "309.778.4234",
										  "01-309-798-4234",
										  "001-309-798-4234",
										  "0-309-798-4234",
										  "+1-309-798-4235",
										  "1-3097980577",
										  "1-309.7980578",
										  "1-(309)-788-8978"};

		for(int index=0;index<phoneNumbersToValidate.length;index++) {
			String number=phoneNumbersToValidate[index];
			boolean isValid=isAValidUSPhoneNumber(phoneNumbersToValidate[index]);
			System.out.println(number+" : "+(isValid?"Valid":"Invalid"));
		}
	}
}

Originally posted 2011-05-17 20:34:21.

Share


Viewing all articles
Browse latest Browse all 12

Trending Articles