How do I match accented characters with PHP preg?
I’d 开发者_高级运维like to give my users the option to not only fill in letters and numbers, but also “special” letters like the “á”, “é”, etc. However, I do not want them to be able to use symbols like “!”, “@”, "%”, etc.
Is there a way to write a regex to accomplish this? (Preferably without specifying each special letter.)
Now I have:
$reg = '/^[\w\-]*$/';
You could use Unicode character properties to describe the characters:
/^[\p{L}-]*$/u
\p{L}
describes the class of Unicode letter characters.
What characters are considered "word-characters" depends on the locale. You should set a locale which has those characters in its natural alphabet, and use the /u
modifier for the regexp, like this:
$str = 'perché';
setlocale(LC_ALL, 'it_IT@euro');
echo preg_match('#^\w+$#u', $str);
you can try with this regex:
$reg = '~[^\\pL\d]+~u';
which catch also accented characters
精彩评论