Проверка имени с использованием регулярных выражений - PullRequest
0 голосов
/ 31 января 2019

Я использую регулярное выражение в своем коде, чтобы проверить имя и отправить форму, мне просто нужна помощь с ее использованием.

Имя должно начинаться с заглавной буквы и может быть от2-3 слова и могут быть разделены апострофом, пробелом или тире, например:

Виктор Гюго

Жанна Д'Арк

Жан-МаркAyrault

Я пытался запустить его с заглавной буквы, используя /^[A-z][a-z]/ Но я не знаю, как продолжить его для проверки пробелов, тире и апострофов.

/^[A-z][a-z]/

Не знаю, как продолжить, спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вы можете попробовать код ниже:

Я бы посоветовал поиграть с https://regexr.com/ для этой цели, это очень удобно!

Я добавил isValidNameStrict, который принимает только ограниченное количество символов в имени.

Измените группу [a-z '] так, как считаете нужным, чтобы добавить дополнительные символы.

function isValidNameStrict(name) {
    let regEx = /^([A-Z][a-z']*[\-\s]?){2,}$/;
    return regEx.test(name);
}

function isValidName(name) {
    let regEx = /^(?:[A-Z][^\s]*\s?){2}$/;
    return regEx.test(name);
}

function testName(name) {
    console.log(`'${name}' is ${isValidNameStrict(name) ? "valid": "not valid"}`);
}

testName("Victor Hugo");
testName("Jeanne D'arc");
testName("Jean-Marc Ayrault");
testName("The Rock");
testName("Victor hugo");
testName("");
testName("Ozymandias");
0 голосов
/ 31 января 2019

Вы можете использовать это регулярное выражение,

\b[A-Z][a-z]*(?:'[a-z]+)?(?:[ -][A-Z][a-z]*(?:'[a-z]+)?)*\b

Объяснение:

  • \b[A-Z][a-z]* - Начинается сопоставление границы слова и заглавной буквы, за которой следует нольили более строчные буквы
  • (?:'[a-z]+)? - необязательно сопровождаются ' и некоторыми строчными буквами.Если вы хотите повторить это более одного раза, измените ? на *, например, если вы действительно хотите поддерживать такие имена, как D'arcd'arc, и я сомневаюсь, что вы хотели, поэтому я сохранил его с ?
  • (?:[ -] - запускает другой не группирующий шаблон и начинает сопоставление либо с пробелом, либо с дефисом
  • [A-Z][a-z]*(?:'[a-z]+)?)* - далее соответствует той же структуре, что и в начале регулярного выражения, и ноль или более раз.
  • \b - Останавливается после просмотра границы слова

Демо

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