1

我正在尝试仅搜索其他语言中的字母和空格(简单单词),如果我找到数字或标点符号,则抛出检测异常。在测试我用维基百科上找到的 UTF-8 数字字符编写的正则表达式时,我的结果总是匹配,我很困惑为什么除非它认为所有数字都被认为是字母。

这是我尝试过的角色:

5 或伍 http://en.wikipedia.org/wiki/Chinese_numerals

5 或Є http://en.wikipedia.org/wiki/Cyrillic_script

这是代码:

$were_bad_characters_found = preg_match('/[^\p{L}\p{Zs}]+/us',  $data); 

它提出的问题的答案总是,不,没有找到坏字符。

根据文档,这似乎可行,事实上,当我尝试通过它运行简单的英文数字时它确实有效,但是一旦多语言字符出现,它就会在我身上翻滚。我对此有很多变体来检测不同的常见场景,所有 utf8 正则表达式代码似乎只适用于英文字符。想法?

4

1 回答 1

0

您显示的字符字母。

unicode 中英文数字的属性使其成为数字而不是字母。在 PHP 中,您可以使用\p{Nd}, 来匹配数字。但是您的正则表达式工作正常。

于 2013-01-11T10:10:03.230 回答