SSN regex Java
SSN stands for social security number and is issued to US citizens, permanent and temporary residents.
SSN regex
This number has the following rules:
- consists of 9 digits and usually divided by 3 parts by hyphen (XXX-XX-XXXX).
- The first part can not be 000, 666, or between 900-900.
- Second part can not be 00
- Third part can not be 0000
Below is a simple SSN regular expression that is divided by hyphens.
- If you want to make hyphens optional, put ? after each dash
- If you want to validate SSN without hyphens - just remove them
Pattern.compile("^(?!666|000|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0{4})\\d{4}$")
Enter a text in the input above to see the result
Example code in Java:
import java.util.regex.Pattern;
import java.util.regex.MatchResult;
import java.util.Arrays;
public class Main {
public static void main(String []args) {
// Validate SSN
boolean isMatch = Pattern.compile("^(?!666|000|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0{4})\\d{4}$")
.matcher("100-22-3333")
.find();
System.out.println(isMatch); // prints true
// Extract ssn from a string
String[] matches = Pattern.compile("(?!666|000|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0{4})\\d{4}")
.matcher("My SSN is 100-22-3333")
.results()
.map(MatchResult::group)
.toArray(String[]::new);
System.out.println(Arrays.toString(matches)); // prints [100-22-3333]
}
}