Regex для разрешения слов, которые имеют только первую букву в верхнем регистре?

Я пытаюсь создать регулярное выражение, которое будет проверять, есть ли у всех слов первая буква в верхнем регистре. бывший например, Фрукты разрешено, но фрукты не разрешено. также разрешено Соединенные Штаты, но не разрешено Соединенные Штаты.

Кроме того, я не хочу разрешать только пробелы и точки.

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

Я добавлю то, что я пробовал до сих пор.

пожалуйста, любая помощь приветствуется.


    $.validator.addMethod("first_letter", function(value,element)
    {
        return this.optional(element) || ^[A-Z].*i.test(value);  // 1.) this is what i am trying to check if first letter of every word is uppercase or not  and can this be combined with the 2.) validation i.e "characters" 
    }, "First Letter Should be Capital !!");

    $.validator.addMethod("characters", function(value,element)
    {
        return this.optional(element) || /^[a-zA-Z.*\s]*$/i.test(value);  // 2.) For only Allowing Alphabets
    }, "Only Characters are Allowed !!");
    
    $.validator.addMethod("dot", function(value,element)
    {
        return this.optional(element) || /^[^.]*$/i.test(value);  // 3.) For Not Allowing Dot Characters
    }, "Dot chatarcters are not Allowed !!");
    
    $.validator.addMethod("only_space", function(value,element)
    {
        return this.optional(element) || /^[.*\S.*]/i.test(value); // 4.) For Not Allowing Only Spaces
    }, "Only Spaces are not Allowed !!");

Все проверки

    $.validator.addMethod("characters", function(value,element)
    {
        return this.optional(element) || /^[a-zA-Z.*\s]*$/i.test(value);
    }, "Only Characters are Allowed !!");
    
    $.validator.addMethod("dot", function(value,element)
    {
        return this.optional(element) || /^[^.]*$/i.test(value);
    }, "Dot chatarcters are not Allowed !!");
    
    $.validator.addMethod("only_space", function(value,element)
    {
        return this.optional(element) || /^[.*\S.*]/i.test(value);
    }, "Only Spaces are not Allowed !!"); 

    $.validator.addMethod("first_letter", function(value,element)
    {
        return this.optional(element) || ^[A-Z][a-z]*(?: [A-Z][a-z]*)*$/ i.test(value);
    }, "First Letter Should be Capital !!");    // your answer , if i am using it as it is then also its not working and other validations above it are also not working.

$.validator.addMethod("characters", function(value,element)
    {
        return this.optional(element) || /^[A-Z][a-zA-Z.*\s] (?: [A-Z][a-z]*)*$/i.test(value);
    }, "Only Characters are Allowed !!");    // what i tried 

$.validator.addMethod("first_letter", function(value,element)
    {
        return this.optional(element) || /^([A-Z] [a-z] * (([A-Za-z]\s)?[a-z]*)*)(\s+\S+\s*)*$/i.test(value);
    }, "First Letter Should be Capital !!");    // I also tried like this.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Такой шаблон может выглядеть так:

^[A-Z][a-z]*(?: [A-Z][a-z]*)*$

Объяснение

  • ^ Начало строки
  • [A-Z][a-z]* Совпадение с одним символом в верхнем регистре и необязательными символами в нижнем регистре.
  • (?: [A-Z][a-z]*)* При желании повторите сопоставление пробела и так же, как предыдущий
  • $ Конец строки

Этот шаблон ограничивает символы A-Z в качестве первых символов, за которыми следуют символы нижнего регистра, где между «словами» может быть просто пробел.

См. демонстрацию на регулярное выражение101.

const regex = /^[A-Z][a-z]*(?: [A-Z][a-z]*)*$/;
[
  "Fruits",
  "fruits",
  "United States",
  "United states"
].forEach(s => console.info(`${s} --> ${regex.test(s)}`));

Более широкое совпадение может начинаться с символа в верхнем регистре, за которым следуют необязательные символы без пробелов (которые также могут снова соответствовать символам в верхнем регистре).

В повторяющейся части вы можете использовать \s+ для соответствия 1 или более пробельным символам (которые также могут соответствовать новой строке).

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

Смотрите другую демонстрацию на регулярное выражение101.

спасибо !! за то, что я дал такое подробное объяснение ответа, это развеяло некоторые мои сомнения. Но у меня это не работает, и когда я добавляю это, другие проверки также не работают. не могли бы вы дать другой способ ??

SnIpEr ReLoAdEd 06.05.2022 15:12

@SnIpErReLoAdEd Можете ли вы привести несколько примеров, когда это не работает? Вы можете обновить эту ссылку регулярного выражения своими примерами regex101.com/r/oVIsm5/1

The fourth bird 06.05.2022 15:12

да конечно, я должен добавить в комментарии ?? о, спасибо, обновлю

SnIpEr ReLoAdEd 06.05.2022 15:13

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

The fourth bird 06.05.2022 15:15

обязательно обновлю здесь.

SnIpEr ReLoAdEd 06.05.2022 15:16

@SnIpErReLoAdEd Какие строки не совпадают?

The fourth bird 06.05.2022 15:23

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

SnIpEr ReLoAdEd 06.05.2022 15:23

все они не работают, если я добавляю это, без этого они в порядке.

SnIpEr ReLoAdEd 06.05.2022 15:27

@SnIpErReLoAdEd Значит, вы имеете в виду, что пример кода в моем ответе верен для всех ваших примеров строк, но ваш код в вопросе не работает?

The fourth bird 06.05.2022 15:28

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

SnIpEr ReLoAdEd 06.05.2022 15:34

@SnIpErReLoAdEd Не этот шаблон делает все это в одном шаблоне. Это то, что вы хотите, верно?

The fourth bird 06.05.2022 15:35

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

SnIpEr ReLoAdEd 06.05.2022 15:40

было бы здорово, если бы их все можно было объединить в один иначе по отдельности тоже бы работало но все они должны работать.

SnIpEr ReLoAdEd 06.05.2022 15:42

@SnIpErReLoAdEd Проверить, что строка не должна содержать только точки или пробелы, можно с помощью ^[. ]*$, а затем отменить результат матча. Если строка должна начинаться с прописной буквы, это просто /^[A-Z]/

The fourth bird 06.05.2022 15:43

Спасибо !! за помощь этот ответ развеял мои сомнения.

SnIpEr ReLoAdEd 07.05.2022 07:39

Другие вопросы по теме