RegEx для сопоставления имен, без пробела - PullRequest
1 голос
/ 15 мая 2019

Я хочу сопоставить имя с заглавной буквой, за которым следуют другие алфавитные символы, но без пробелов, поэтому по сути это имя, такое как: Кевин.

У меня есть попытка, которая, похоже, не работает:

pattern = "([A-Z]\w+)(^\s)"

Ответы [ 3 ]

1 голос
/ 15 мая 2019

Я бы использовал вариант ([A-Z][a-z]+)$, используемый Эммой.

Этот RegEx получит имя каждой записи и будет работать, даже если запись имеет только первое имя.

Имена будут разделены новой строкой.

Regex test

1 голос
/ 15 мая 2019

Вы можете просто связать свое выражение с конечным $ символом, и этого будет достаточно:

([A-Z][a-z]+)$

Если вы хотите добавить больше границ, вы также можете связать его с помощью начального ^ символа:

^([A-Z][a-z]+)$

Вы также можете удалить группу захвата, если хотите, и она все равно будет соответствовать.

[A-Z][a-z]+$

RegEx

Вы можете изменять / изменять свои выражения в regex101.com .

enter image description here

RegEx Circuit

Вы можете визуализировать свои выражения в jex.im :

enter image description here

JavaScript Demo

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.log('Substitution result: ', result);
0 голосов
/ 15 мая 2019

РЕДАКТИРОВАТЬ: Обновлено, чтобы включить любой символ слова после начальной заглавной буквы.

Попробуйте заглянуть в будущее так:

([A-Z]\w+\b(?!\s))

В приведенном выше примере \b ищет границу слова в конце, а (?!\s) не сможет выполнить регулярное выражение, если найдет пробел. Основное различие между этим и принятым ответом состоит в том, что он также будет захватывать новые строки и завершаться ошибкой, когда установлен многострочный флаг.

Как всегда, это зависит от вашего варианта использования.

Рабочий пример:

const matchName = /([A-Z]\w+\b(?!\s))/
console.log(matchName.test("kevin")) // false
console.log(matchName.test("Kevin")) // true
console.log(matchName.test("Kevin ")) // false
console.log(matchName.test("KeVin")) // true
console.log(matchName.test("Kevin\n")) // false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...