我正在尝试在其他语言中搜索字母和空格(简单单词),如果我找到数字或标点符号,则抛出检测异常。在测试正则表达式时,我用维基百科上的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正则表达式代码似乎只适用于英文字符。想法?
答案 0 :(得分:0)
您展示的字符是字母。
properties of english digits in unicode将其设为数字,而不是字母。在PHP中,您可以使用\p{Nd}
来匹配数字。但你的正则表达式正常。