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

2022-08-30 20:29:37

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

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

现在我有:

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

答案 1

您可以使用 Unicode 字符属性来描述字符:

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

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


答案 2

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

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

推荐