Title |
Test
Find
Pattern Title
|
Expression |
^(?=((0[1-9]0)|([1-7][1-7]\d)|(00[1-9])|(0[1-9][1-9]))-(?=(([1-9]0)|(0[1-9])|([1-9][1-9]))-(?=((\d{3}[1-9])$|([1-9]\d{3})$|(\d[1-9]\d{2})$|(\d{2}[1-9]\d)$)))) |
Description |
I wrote this regular expression because a project I was working on required a stricter validator on social security numbers. There are actually gov't standards on what is a valid social: The first 3 digits can't be > 779, The first 3 digits can't be 000, The second 2 digits can't be 00, and the last 4 digits can't be 0000. This regex handles all these cases and checks formatting for numbering and dashes (###-##-####) |
Matches |
053-27-0293 | 770-29-2012 | 063-71-9123 |
Non-Matches |
780-20-1230 | 000-24-1290 | 123-00-1239 |
Author |
Rating:
Not yet rated.
Scott Long
|
Source |
|
Your Rating |
|
Title: Two fixes
Name: Shawn K. Hall
Date: 10/16/2003 2:06:35 PM
Comment:
There were two bugs in this regex:
It didn't account for SSN's in the format [1-7]0n-nn-nnnn or for anything in the range of [1-6][8-9]n-nn-nnnn
Those are resolved with this correction:
^(?=((0[1-9]0)|([1-7][0-7]\d)|([1-6][0-9]\d)|(00[1-9])|(0[1-9][1-9]))-(?=(([1-9]0)|(0[1-9])|([1-9][1-9]))-(?=((\d{3}[1-9])$|([1-9]\d{3})$|(\d[1-9]\d{2})$|(\d{2}[1-9]\d)$))))
Great work though!