PHP регулярное выражение для проверки английского имени - PullRequest
1 голос
/ 02 сентября 2010

В поисках регулярного выражения для проверки правильного английского имени, т. Е .:

  • A-Z, a-z, 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');

?>

Ответы [ 4 ]

7 голосов
/ 02 сентября 2010

Если указанные вами правила на самом деле соответствуют вашим требованиям, то сработает следующее:

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

Однако существует довольно много реальных имен, которые не вписываются в эти правила,например, «О'Мэлли», «Джо-Джо» и т. д.

Конечно, вы можете довольно легко расширить это регулярное выражение, добавив в него другие символы - просто добавьте их в скобки.Например, чтобы разрешить апострофы и тире, вы можете использовать [A-Za-z'-] (- должно быть в конце, или оно будет интерпретировано как диапазон).

2 голосов
/ 02 сентября 2010

Твое имя потерпит неудачу из-за О'Нила там. Также Уэбба-Смита и тому подобное.

Использовать @ Амбер модифицировано:

/ (?: [A-Za-Z .'-] + \ S *) {2,3} / * * 1005

0 голосов
/ 03 сентября 2010

Это плохая идея . У людей могут быть различные знаки препинания в их именах, такие как тире и апострофы. Они могут также иметь акцентированные или иностранные буквы. Кроме того, количество отчеств может значительно варьироваться.

0 голосов
/ 02 сентября 2010

Вы можете попробовать:

if(preg_match('/^([a-z]+ ){1,2}[a-z]+$/i',trim($input))) {
  // valid full name.
}

Как отмечалось другими, это не допустит пунктуации в имени !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...