Я хочу сопоставить имя, в котором первая буква заглавная, за которой следуют другие буквы алфавита, но без пробела, поэтому, по сути, имя, такое как: Кевин.
У меня есть следующая попытка, которая, похоже, не работает:
pattern = "([A-Z]\w+)(^\s)"
Попробуйте ^[A-Z]\w+$
Имейте в виду, имя МОЖЕТ иметь заглавную букву в середине имени. пример: моя фамилия VanOost



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете просто связать свое выражение с концом $ char, и этого будет достаточно:
([A-Z][a-z]+)$
Если вы хотите добавить больше границ, вы также можете связать их с помощью начального символа ^:
^([A-Z][a-z]+)$
Вы также можете удалить группу захвата, если хотите, и она все равно будет соответствовать.
[A-Z][a-z]+$
Вы можете модифицировать/изменить свои выражения в regex101.com.
Вы можете визуализировать свои выражения в jex.im:
const regex = /([A-Z][a-z]+)$/gm;
const str = `Kevin`;
const subst = `$1`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.info('Substitution result: ', result);Обновлено: Обновлено, чтобы включить любой символ слова после начальной заглавной буквы.
Попробуйте негативный взгляд вперед, например:
([A-Z]\w+\b(?!\s))
В приведенном выше примере \b ищет границу слова в конце, а (?!\s) не выполнит регулярное выражение, если найдет пробел. Основное различие между этим и принятым ответом заключается в том, что он также будет подбирать новые строки и завершаться ошибкой, когда установлен многострочный флаг.
Как всегда, это зависит от вашего варианта использования.
Рабочий пример:
const matchName = /([A-Z]\w+\b(?!\s))/
console.info(matchName.test("kevin")) // false
console.info(matchName.test("Kevin")) // true
console.info(matchName.test("Kevin ")) // false
console.info(matchName.test("KeVin")) // true
console.info(matchName.test("Kevin\n")) // false
Использование
^[A-Z][a-z]+$или\b[A-Z][a-z]+\bдолжно быть достаточно хорошим.