Я написал эту функцию для вашей цели.
/**
* This function checks if first name
* is valid. Keep in mind this is
* not the proper solution. It will
* work only for names written in
* latin letters.
* @example
* isFirstNameValid('Ivan')
* will return true.
* isFirstNameValid('IvaN')
* will return false.
* @author Georgi Naumov
* gonaumov@gmail.com for contacts and
* suggestions
**/
const isFirstNameValid = (firstName) =>
/^[a-zA-z][a-z]+$/.test(firstName)
Редактировать: Я реализовал решение с поддержкой Unicode для людей с подобной проблемой в будущем. Он поддерживает латынь, иврит и кириллицу. Если вы хотите поддержать другие культуры, вам нужно предоставить для них регулярные выражения в хеше культур.
const isFirstNameValidWithUnicodeSupport = (firstName, culture = 'LATIN') => {
const cultures = {
HEBREW: /^[\u0590-\u05FF]{2,}$/,
CYRILLIC: /^[\u0410-\u042F\u0430-\u044F][\u0430-\u044F]+$/,
LATIN: /^[A-Za-z][a-z]+$/,
};
return cultures[culture].test(firstName);
}
This returns true because is valid name in latin
alphabet.
console.log(isFirstNameValidWithUnicodeSupport('Ivan'));
This returns true because is valid name in cyrillic
alphabet.
console.log(isFirstNameValidWithUnicodeSupport('Иван', 'CYRILLIC'));
This returns false because is valid name in cyrillic
alphabet but there is a space in the end.
console.log(isFirstNameValidWithUnicodeSupport('Иван ', 'CYRILLIC'));
This returns true because is valid name in hebrew
alphabet.
console.log(isFirstNameValidWithUnicodeSupport('אגרת', 'HEBREW'));
This returns false because is valid name in hebrew
but is whole name containing spaces. Not only first name.
console.log(isFirstNameValidWithUnicodeSupport('אגרת בת מחלת', 'HEBREW'));
Edit2: Возможно, лучшим решением будет библиотека xregexp, если вы хотите использовать библиотеку для этой цели. https://github.com/slevithan/xregexp