letter [A-Za-z]
name {letter}[A-Z]{1}[a-z]+(-{letter}[A-Z]{1}[a-z]+){0,1}
identity [A-Za-z]{1}[0-9]{9}
email [0-9]+@[a-z]+\.[a-z]+
birthday ([12][0-9]{3}|[89][0-9]{2})/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])
phone \+886[0-9]{9}
%option noyywrap
%%
{name
} {ECHO
; printf
("
is a valid name
.\n"
);} {identity
} {ECHO
; printf
("
is a valid identity
number.\n"
);} {email
} {ECHO
; printf
("
is a valid email
.\n"
);} {birthday
} {ECHO
; printf
("
is a valid birthday
.\n"
);} {phone
} {ECHO
; printf
("
is a valid phone
number.\n"
);}
%%
int main(int argc, char *argv[]) {
yylex();
return(0);
}
bGV0dGVyICAgICBbQS1aYS16XQpuYW1lICAgICAgIHtsZXR0ZXJ9W0EtWl17MX1bYS16XSsoLXtsZXR0ZXJ9W0EtWl17MX1bYS16XSspezAsMX0KaWRlbnRpdHkgICBbQS1aYS16XXsxfVswLTldezl9CmVtYWlsICAgICAgWzAtOV0rQFthLXpdK1wuW2Etel0rCmJpcnRoZGF5ICAgKFsxMl1bMC05XXszfXxbODldWzAtOV17Mn0pLygwWzEtOV18MVswLTJdKS8oMFsxLTldfFsxMl1bMC05XXwzWzAxXSkKcGhvbmUgICAgICBcKzg4NlswLTldezl9Cgolb3B0aW9uIG5veXl3cmFwCgolJQoKe25hbWV9ICAgICB7RUNITzsgcHJpbnRmKCIgaXMgYSB2YWxpZCBuYW1lLlxuIik7fQp7aWRlbnRpdHl9IHtFQ0hPOyBwcmludGYoIiBpcyBhIHZhbGlkIGlkZW50aXR5IG51bWJlci5cbiIpO30Ke2VtYWlsfSAgICB7RUNITzsgcHJpbnRmKCIgaXMgYSB2YWxpZCBlbWFpbC5cbiIpO30Ke2JpcnRoZGF5fSB7RUNITzsgcHJpbnRmKCIgaXMgYSB2YWxpZCBiaXJ0aGRheS5cbiIpO30Ke3Bob25lfSAgICB7RUNITzsgcHJpbnRmKCIgaXMgYSB2YWxpZCBwaG9uZSBudW1iZXIuXG4iKTt9CgolJQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewogICAgeXlsZXgoKTsKICAgIHJldHVybigwKTsKfQo=