Thank you for a great "Juletip" Thomas.
Amazing what can be done with just one function!
I just recently found this example, which might be usefull for someone else 🙂
It can be used for validating if 10 digits is a valid Danish social security id (CPRNR)
data ValidCpr;
input cpr $10.;
valid=prxmatch('/^(?:(?:31(?:0[13578]|1[02])|(?:30|29)(?:0[13-9]|1[0-2])|(?:0[1-9]|1[0-9]|2[0-8])(?:0[1-9]|1[0-2]))[0-9]{3}|290200[4-9]|2902(?:(?!00)[02468][048]|[13579][26])[0-3])[0-9]{3}$/',cpr);
/* ^ = beginning of text
Max 31 for month 1,3,5,7,8,10,12
29 in february, but only if leap year
29 in february, but only if digt-7 is between 4 and 9
. . . .
$ = end of text
*/
cards;
3101011234
2902001234
2902004567
3004475364
3104475364
;
run;
... View more