Регулярное выражение для проверки того, что первая буква каждого слова является заглавной в angular js

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

Я использую ng-шаблон для проверки поля имени. Какое регулярное выражение следует использовать? Ценю вашу помощь.


person vjangra    schedule 27.04.2015    source источник
comment
Не могли бы вы показать, что вы пробовали?   -  person Wiktor Stribiżew    schedule 27.04.2015
comment
Я пытался использовать (\s|^[A-Z])([a-z0-9-_]+)..... Но это не работает так, как я хочу   -  person vjangra    schedule 27.04.2015
comment
Проверять это не всегда хорошая идея, несколько имен с частицами могут быть недействительными: de la Porte, de la Rue. На мой взгляд, вы должны проверять свое поле только на наличие разрешенных символов и, при необходимости, форматировать его перед записью.   -  person Casimir et Hippolyte    schedule 27.04.2015


Ответы (3)


Вы можете использовать

^\b(?:[A-Z]\w+\b(?:\s*)?)+$

См. демонстрацию и объяснение.

person karthik manchala    schedule 27.04.2015
comment
Спасибо... это именно то, что мне было нужно... работает как шарм!! :D - person vjangra; 27.04.2015

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

ng-pattern="/^\b[A-Z][a-z]*(\s*\b[A-Z][a-z]*\b)*$/"

Демо

Это регулярное выражение будет соответствовать только записям, которые содержат слова (не содержащие цифр или подчеркивания) только в заголовке. Таким образом, Avinash Raj1 или Avinash_Raj Raj не пройдут проверку.

Пример кода:

<label>Single word:
    <input type="text" name="input" ng-model="example.text"
           ng-pattern="/^\b[A-Z][a-z]*(\s*\b[A-Z][a-z]*\b)*$/" required ng-trim="false">
</label>
person Wiktor Stribiżew    schedule 27.04.2015

Как насчет ^(\b[A-Z]\w*\s*)+$? См. https://regex101.com/r/qP5xG5/1.

person Uri Y    schedule 27.04.2015