如何将重音字符与 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) 中的重音字符和波浪字符?