Я пытаюсь создать регулярное выражение, которое будет проверять, есть ли у всех слов первая буква в верхнем регистре. бывший например, Фрукты разрешено, но фрукты не разрешено. также разрешено Соединенные Штаты, но не разрешено Соединенные Штаты.
Кроме того, я не хочу разрешать только пробелы и точки.
я создал регулярное выражение, чтобы не разрешать только пробел и точки по отдельности, но я хочу, чтобы они были в одном регулярном выражении с верхним требованием, есть ли способ добиться этого ??
Я добавлю то, что я пробовал до сих пор.
пожалуйста, любая помощь приветствуется.
$.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.
Такой шаблон может выглядеть так:
^[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.
@SnIpErReLoAdEd Можете ли вы привести несколько примеров, когда это не работает? Вы можете обновить эту ссылку регулярного выражения своими примерами regex101.com/r/oVIsm5/1
да конечно, я должен добавить в комментарии ?? о, спасибо, обновлю
@SnIpErReLoAdEd Вы можете поделиться обновленной ссылкой на регулярное выражение101 здесь, в комментариях, или вы можете обновить вопрос, указав больше примеров строк.
обязательно обновлю здесь.
@SnIpErReLoAdEd Какие строки не совпадают?
Я добавил все свои проверки отдельно, не знал, где еще обновить, пожалуйста, загляните в него, извините за потраченное время.
все они не работают, если я добавляю это, без этого они в порядке.
@SnIpErReLoAdEd Значит, вы имеете в виду, что пример кода в моем ответе верен для всех ваших примеров строк, но ваш код в вопросе не работает?
нет, извините, если я не могу правильно выразиться. Я говорю, что когда я добавляю ваше регулярное выражение, все другие регулярные выражения, которые я показал выше, не работают, то есть они не обнаруживают только пробел, они не обнаруживают точечные символы.
@SnIpErReLoAdEd Не этот шаблон делает все это в одном шаблоне. Это то, что вы хотите, верно?
нет, я просто хочу, когда я ввожу строку, она должна проверять, является ли первая буква заглавной или нет, и она должна быть совместима со всеми моими другими проверками.
было бы здорово, если бы их все можно было объединить в один иначе по отдельности тоже бы работало но все они должны работать.
@SnIpErReLoAdEd Проверить, что строка не должна содержать только точки или пробелы, можно с помощью ^[. ]*$
, а затем отменить результат матча. Если строка должна начинаться с прописной буквы, это просто /^[A-Z]/
Спасибо !! за помощь этот ответ развеял мои сомнения.
спасибо !! за то, что я дал такое подробное объяснение ответа, это развеяло некоторые мои сомнения. Но у меня это не работает, и когда я добавляю это, другие проверки также не работают. не могли бы вы дать другой способ ??