如何使用PHP preg匹配重音字符?

时间:2010-01-25 16:28:54

标签: php regex pcre

我想让我的用户不仅可以填写字母和数字,还可以选择“á”,“é”等“特殊”字母。但是,我不希望他们能够使用“!”,“@”,“%”等符号

有没有办法写一个正则表达式来完成这个? (最好不要指定每个特殊字母。)

现在我有:

$reg = '/^[\w\-]*$/';

3 个答案:

答案 0 :(得分:39)

您可以使用Unicode character properties来描述字符:

/^[\p{L}-]*$/u

\p{L}描述了Unicode字母字符的类。

答案 1 :(得分:4)

哪些字符被视为“字词字符”取决于区域设置。您应该设置一个包含其自然字母表中的字符的语言环境,并使用/u修饰符作为正则表达式,如下所示:

$str = 'perché';
setlocale(LC_ALL, 'it_IT@euro');
echo preg_match('#^\w+$#u', $str);

答案 2 :(得分:4)

你可以试试这个正则表达式:

$reg = '~[^\\pL\d]+~u';

其中也包含重音字符