on my php i use preg_match
to validate input texts.
if(preg_match(\'/^[a-zA-Z0-9]+$/\', $firstname)) {
}
But this only allows alp
Use
preg_match('/^[a-z0-9 .\-]+$/i', $firstname)
The only difficult bit here is the dash.
For spaces and dots, you can simply add them to your character class, like so:
'/^[a-zA-Z0-9 .]+$/'
Easy.
The dash is slightly harder because hyphens have special meaning in a character class like this (as you already know, they're used for ranges of characters like a-z
). In order to specify a hyphen in a character class, it must be the first character in the class (ie it must not be between two characters, otherwise it is treated as a character range marker).
So your expression would be:
'/^[-a-zA-Z0-9 .]+$/'
Hope that helps.
If you not only want to allow ASCII, then use Unicode properties:
preg_match('/^[\p{L}\p{N} .-]+$/', $firstname)
\p{L}
is any letter in any language, matches also Chinese, Hebrew, Arabic, ... characters.
\p{N}
any kind of numeric character (means also e.g. roman numerals)
if you want to limit to digits, then use \p{Nd}