Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-仅匹配unicode字母数字和标点符号_Php_Regex_Unicode - Fatal编程技术网

PHP-仅匹配unicode字母数字和标点符号

PHP-仅匹配unicode字母数字和标点符号,php,regex,unicode,Php,Regex,Unicode,我有一个正则表达式: '/^[\p{L}\p{Mn}\p{Pd}\'\x{2019}]+(\s+[\p{L}\p{Mn}\p{Pd}\'\x{2019}]+)*$/u' 目标:使用unicode字符(如“D'Agatti”或“María”等)匹配有效(姓)姓名(人名)。还必须包括一些特殊符号,如连字符 问题:它也在匹配数字 问题:如何避免匹配号码?我应该使用什么字符类?匹配名称的简单方法如下: '/^([^\d]*)$/u' 除了数字之外,这一切都匹配 然而,正如你所说,它的名字太宽泛了。您最

我有一个正则表达式:

'/^[\p{L}\p{Mn}\p{Pd}\'\x{2019}]+(\s+[\p{L}\p{Mn}\p{Pd}\'\x{2019}]+)*$/u'
目标:使用unicode字符(如“D'Agatti”或“María”等)匹配有效(姓)姓名(人名)。还必须包括一些特殊符号,如连字符

问题:它也在匹配数字


问题:如何避免匹配号码?我应该使用什么字符类?

匹配名称的简单方法如下:

'/^([^\d]*)$/u'

除了数字之外,这一切都匹配


然而,正如你所说,它的名字太宽泛了。您最终可以对原始测试的结果运行此测试,以删除带有数字的名称。

对于名称来说,它太宽了,但我想我可以使用一个子项/\d+/(稍后)来检查(通过prev.regex)是否有效)名称有数字,并在该情况下引发错误。接受修改后的答案。@sshashank124您能帮我解决这个问题吗?这是类似的,但对于这个问题,数字是允许的,但是数字必须包含在它自己的术语中,而不是发现问题的其他(非数字)术语的一部分!最终,unicode没有问题,但DRUPAL没有调用处理程序,因为“它的名称太长”。说真的,Drupal糟透了。你的模式对我来说很好,也许问题出在其他地方。是的,是在其他地方。那是用DRUPAL写的。Drupal和它的无声错误raelly很差劲(是的,我在接受答案后就知道了,因为我在别处测试了答案:s)。事实上,drupal无论何时何地都很烂。这一次它截断了一个处理程序的名称(即使标识符长度不是PHP限制,我的处理程序名称显然“太长了”),所以我的实际处理程序从未被调用(甚至没有触发“函数不存在”!!!不得不施展印加魔法来看看发生了什么)。我同情你,祝你好运。