PHP正则表达式检查英文名称

ohh*_*hho 1 php regex

寻找正则表达式来检查有效的英文名称,即:

  • AZ,az,space
  • 名字,(可选)中间名,姓氏

可接受的例子: John von Neumann

谢谢!

编辑(添加检查代码):

#!/usr/bin/php

<?php

    function check_name($regex, $name)
    {
        $rc = 'Bad';
        if (preg_match($regex, $name)) {    
            $rc = 'Good';
        }
        return '|' . $name . '| ' . $rc . "\n";
    }

    $regex = '/(?:[A-Za-z]+(?:\s+|$)){2,3}/';
    echo check_name($regex, 'First');
    echo check_name($regex, 'First Last');
    echo check_name($regex, 'Two  Spaces');
    echo check_name($regex, 'First Middle Last');
    echo check_name($regex, 'First Middle Last Fourth');
    echo check_name($regex, 'First 123');

?>
Run Code Online (Sandbox Code Playgroud)

Amb*_*ber 7

如果您说明的规则实际上是您想要的,则以下内容可行:

/^(?:[A-Za-z]+(?:\s+|$)){2,3}$/
Run Code Online (Sandbox Code Playgroud)

但是,有很多不符合这些规则的现实名称,如"O'Malley","Jo-Jo"等.

您当然可以相当容易地扩展此正则表达式以允许其他字符 - 只需将它们添加到括号中即可.例如,要允许撇号和破折号,您可以使用[A-Za-z'-](-必须在最后,或者它将被解释为范围).