мне нужно проверить строку с 2 группами, которые разделены одним пробелом со следующими правилами:Хитрый регулярное выражение проверки
Каждая группа должна быть по крайней мере, 2 символов длиной, но меньше или равен 15
Обе группы вместе не могут быть длиной более 20 символов (не считая пространства)
группы могут содержать только буквы (это просто, это [A-Za-Z])
Следуя этим правилам, вот некоторые примеры
Имя Фамилия (Valid)
SomeName T (Invalid, второй один < 2)
Somethingsomettt Здесь (Invalid, первый -> 15)
Somethingsome Somethingsome (Недействительный, всего> 20)
Было бы просто [a-zA-Z]{2,15} [a-zA-Z]{2,15}
, если бы не было, что 2 + 2 = < < общая = 20 состояние.
Можно ли даже ограничить его таким образом? Если это - как?
UPDATE Только ради этого, в результате регулярных выражений должен был быть ^(?=[a-zA-Z ]{5,21}$)[a-zA-z]{2,15} [a-zA-Z]{2,15}$
, @vks был ближе всего к нему один. Тем не менее, спасибо @поповиц и @ Авинаш Радж тоже.
Почему бы не разделить на пространстве в середине, так и отдельно проверять обе части? Это позволит вам тривиально проверить общую длину. – ajp15243
Есть ли причина, по которой вам нужно сделать это с помощью одного регулярного выражения? –
Похоже, у вас есть дополнительный '-' в середине вашего первого класса символов (' [a-z-A-Z] '). – ajp15243