PHP Nette - validace formuláře - REGEX pravidlo pro české znaky + mezera a pomlčka
Ahoj,
mám v PHP Nette projektu formulář s inputem na jméno, který je pomocí REGEX pravidla takto validován:
Na typická česká jména to je vyhovující, ale na dvě jména či jména s pomlčkou to nevyhovuje. Jak bych měl to REGEX pravidlo upravit, aby tam mohla být mezera a pomlčka?
Díky
Ahoj,
abys v tom Nette formuláři měl regularní plavidlo i na pomlčku, tak bys mohl REGEX upravit takto:
REGEX - může obsahovat pomlčku (minus)
REGEX - mezera (space)
S touto definicí formu s tímto regulárem bys mohl být spokojený:
Ale nejlepší bude tento regulární výraz (projde i více jmen za sebou), takže resumé je:
Show english version
mám v PHP Nette projektu formulář s inputem na jméno, který je pomocí REGEX pravidla takto validován:
$form->addText('name', 'Jméno')
->setHtmlAttribute('class', 'form-control')
->addRule(Form::MIN_LENGTH, 'Jméno musí mít alespoň %d znaky', 2)
->addRule(Form::MAX_LENGTH, 'Jméno nemůže mít více jak %d znaků', 20)
->addRule(Form::PATTERN, 'Jméno obsahuje nepovolené znaky.', '[a-zA-ZáčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ]+[ \-]?')
->setRequired('Zadejte jméno');
Na typická česká jména to je vyhovující, ale na dvě jména či jména s pomlčkou to nevyhovuje. Jak bych měl to REGEX pravidlo upravit, aby tam mohla být mezera a pomlčka?
Díky
ODPOVĚĎ
Ahoj,
abys v tom Nette formuláři měl regularní plavidlo i na pomlčku, tak bys mohl REGEX upravit takto:
REGEX - může obsahovat pomlčku (minus)
[a-zA-ZáčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ-]
REGEX - mezera (space)
+[\w ]
S touto definicí formu s tímto regulárem bys mohl být spokojený:
$form->addText('name', 'Jméno')
->setHtmlAttribute('class', 'form-control')
->addRule(Form::MIN_LENGTH, 'Jméno musí mít alespoň %d znaky', 2)
->addRule(Form::MAX_LENGTH, 'Jméno nemůže mít více jak %d znaků', 20)
->addRule(Form::PATTERN, 'Jméno obsahuje nepovolené znaky.', '[a-zA-ZáčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ-]+[\w ]+[ \-]?')
->setRequired('Zadejte jméno');
Ale nejlepší bude tento regulární výraz (projde i více jmen za sebou), takže resumé je:
$form->addText('name', 'Jméno')
->setHtmlAttribute('class', 'form-control')
->addRule(Form::MIN_LENGTH, 'Jméno musí mít alespoň %d znaky', 2)
->addRule(Form::MAX_LENGTH, 'Jméno nemůže mít více jak %d znaků', 20)
->addRule(Form::PATTERN, 'Jméno obsahuje nepovolené znaky.', '[ ./a-zA-ZáčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ-]+[ \-]?')
->setRequired('Zadejte jméno');
Show english version