如何将重音字符与PHP preg匹配?

如何将重音字符与PHP preg匹配?,php,regex,pcre,Php,Regex,Pcre,我想让我的用户不仅可以选择填写字母和数字,还可以选择“特殊”字母,如“á”、“é”等。但是,我不希望他们能够使用诸如“!”、“@”和“%”等符号 有没有一种方法可以编写正则表达式来实现这一点?(最好不指定每个特殊字母。) 现在我有: $reg = '/^[\w\-]*$/'; 哪些字符被视为“单词字符”取决于区域设置。您应该设置一个在其自然字母表中包含这些字符的区域设置,并对regexp使用/u修饰符,如下所示: $str = 'perché'; setlocale(LC_ALL, 'it_I

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

有没有一种方法可以编写正则表达式来实现这一点?(最好不指定每个特殊字母。)

现在我有:

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

哪些字符被视为“单词字符”取决于区域设置。您应该设置一个在其自然字母表中包含这些字符的区域设置,并对regexp使用
/u
修饰符,如下所示:

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

您可以尝试使用此正则表达式:

$reg = '~[^\\pL\d]+~u';
您可以使用哪种捕获方式来描述重音字符

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

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

在我的服务器上似乎不起作用。但是Gumbo的回答起作用了。谢谢你的回复doesn似乎也不起作用。但是Gumbo的解决方案起作用了。谢谢你的回复