Java Regular Expression to Validate Social Security Number (SSN)

Here is a utility method to check if a given String is a valid Social Security number using Java Regular Expression. 

/** isSSNValid: Validate Social Security number (SSN) using Java regex.
* This method checks if the input string is a valid SSN.
* @param email String. Social Security number to validate
* @return boolean: true if social security number is valid, false otherwise.
*/
 public static boolean isSSNValid(String ssn){
boolean isValid = false;
 /*SSN format xxx-xx-xxxx, xxxxxxxxx, xxx-xxxxxx; xxxxx-xxxx:
         ^\\d{3}: Starts with three numeric digits.
	[- ]?: Followed by an optional "-"
	\\d{2}: Two numeric digits after the optional "-"
	[- ]?: May contain an optional second "-" character.
	\\d{4}: ends with four numeric digits.

        Examples: 879-89-8989; 869878789 etc.
*/

//Initialize regex for SSN. 
String expression = "^\\d{3}[- ]?\\d{2}[- ]?\\d{4}$";
CharSequence inputStr = ssn;
Pattern pattern = Pattern.compile(expression);
Matcher matcher = pattern.matcher(inputStr);
if(matcher.matches()){
isValid = true;
}
return isValid;
}

This method will return true if the given String matches one of these SSN formats xxx-xx-xxxx, xxxxxxxxx, xxx-xxxxxx, xxxxx-xxxx:

Social Security RegEx Explained:

A String would be considered a valid Social Security Number (SSN) if it satisfies the following conditions:

^\\d{3}: Starts with three numeric digits.

[- ]?: Followed by an optional “-“

\\d{2}: Two numeric digits after the optional “-“

[- ]?: May contain an optional second “-” character.

\\d{4}: ends with four numeric digits.