Сделать ввод текста только принять собственное человеческое имя - PullRequest
0 голосов
/ 17 октября 2019

Чтение при этом: регулярное выражение для имени и фамилии

Вот мои тесты:

    Fail cases:
    陳大文 (fail, not support international name)
    Stev3 Smith (fail, contain number)
    123 (fail, contain number)
    @##$ smith (fail, special char)
    .Mathias (fail, dot)
    ..Mathias (fail, dot dot)
    Success cases:
    Martin Luther King, Jr. (pass)
      john   smith (pass, javascript does str.trim())
    d'Are to Beaware (pass)
    Jo Blow (pass)
    Steve Johnson-Smith (pass)
    O Henry Smith (pass)
    john & john (pass, support &)

Мое текущее решение:

const regExp = /^[\w'\-,.][^0-9_!¡?÷?¿/\\+=@#$%ˆ*(){}|~<>;:[\]]{0,}[^-]$/;
return condi = regExp.test(input)

Моя проблема в том, что я не могу передать это:

.Mathias (fail, dot)
..Mathias (fail, dot dot)

и это одновременно

Martin Luther King, Jr.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Проблема с желанием делать подобные вещи заключается в том, что вы можете подходить к этой проблеме только исходя из того, что вы думаете , что вы знаете об именах. Конечно, есть много людей, у которых есть имена, которые вы привыкли видеть, например John Smith, но есть и многие, у которых их нет.

Например, вы хотите подвести людей, у которых есть номерав их именах, но есть люди, у которых есть числа в их имени, потому что это не незаконно везде. В испаноязычных регионах мира есть люди с необычно длинными полными именами и несколькими отчествами, которые могут нарушить другие предположения, которые вы делаете относительно имен, даже если вы с ними не знакомы.

Может показаться,немного глупо отбрасывать всю проверку из-за пары человек с числами в именах, но реальная проблема в том, что вы пытаетесь сделать предположения о неизвестном неизвестном. Вы не знаете, какие имена там, и вы также не знаете, что есть вещи, которые вы не знаете об именах. В этом блоге о ложных сведениях, которые программисты верят в имена , более подробно освещается этот вопрос.

Пока вы проверяете правильность имен, чтобы исключить все таблицы Бобби в миреВ вашей базе данных нет действительно всеобъемлющего способа проверки имени, не сделав неправильных предположений. Особенно не с регулярным выражением.

0 голосов
/ 17 октября 2019

Простой, просто замените [\w'\-,.] (который будет соответствовать.) На \w, который не будет.

Ваши тестовые примеры пройдут - независимо от того, является ли это «реальным» именемдо обсуждения.

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