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

Mau*_*ice 20 php regex pcre

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

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

我现在有:

$reg = '/^[\w\-]*$/';
Run Code Online (Sandbox Code Playgroud)

Gum*_*mbo 39

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

/^[\p{L}-]*$/u
Run Code Online (Sandbox Code Playgroud)

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


Mat*_*iva 5

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

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