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

Posted

技术标签:

【中文标题】如何将重音字符与 PHP preg 匹配?【英文标题】:How do I match accented characters with PHP preg? 【发布时间】:2011-01-09 04:16:14 【问题描述】:

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

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

现在我有:

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

【问题讨论】:

【参考方案1】:

你可以用Unicode character properties来描述人物:

/^[\pL-]*$/u

\pL 描述了 Unicode 字母字符的类别。

【讨论】:

【参考方案2】:

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

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

【讨论】:

似乎也不起作用。但 Gumbo 的解决方案奏效了。感谢回复【参考方案3】:

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

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

同时捕捉重音字符

【讨论】:

似乎无法在我的服务器上运行。但秋葵的回答奏效了。感谢回复

以上是关于如何将重音字符与 PHP preg 匹配?的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有无效字符(重音)的 Pandas 数据框与数组匹配? [复制]

js 如何正则匹配多个,像php 的preg_match()

预匹配文件名与连字符

如何匹配 perl 正则表达式 (regexp) 中的重音字符和波浪字符?

如何在PHP中preg_match一个可以为NULL的变量?

PHP 正则表达式匹配 preg_match 与 preg_match_all 函数