Autor Zpráva
Mufna
Profil
Zdravím Vás. Prosím opět o radu ohledně regulárního výrazu. Má kontrolovat jméno zadané do formuláře včetně českých jmen. Počítá to zatím v podstatě jen s anglickými (či jinými, které nezahrnují nějaké další speciální znaky) a českými jmény, zbytek jsem neřešil. Zatím ho mám jednoduše takto:
$regexp = '/^[a-zA-ZáčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ]$/';


Co bych potřeboval je to, že chci navíc povolit znaky:
1)mezera
2)tečka - když si někdo třeba potrpí na titulu a zadá např.: "ing. Ten a Ten
3)apostrof - pro jméno typu "O'Connor" apod.

Co by nebylo špatný (ale to mi až tak žíly nerve) je ošetření, aby jméno nezačínalo některými znaky - třeba Ě. Když tak teď přemýšlím, tak asi snad vším ostatním jméno začínat může, i když třeba Ů a Ý je docela divočina.

Myslím, že jiné znaky pro daný rozsah jazyků není třeba povolovat.
AM_
Profil
$regexp = '/^[a-zA-ZáčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ \\.\\\']+$/';

mezeru escapovat nemusíš, tečku a apostrof ano (apostrof tuším třemi lomítky).
Důležité je to + na konci, jinak by ti to bralo jen jméno o délce jednoho znaku :)

Pokud nechceš, aby jméno něčím začínalo, tak asi takhle:

$regexp = '/^[a-zA-ZáčďéíňóřšťúýžÁČĎÉÍŇÓŘŠŤÚÝŽ \\.\\\'][a-zA-ZáčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ \\.\\\']*$/';
V první závorce reprezentující první znak daná písmenka vynecháš, ale to mi už přijde jako zbytečné; každý ví nejlépe, jak se jmenuje, a když tam někdo bude chtít napsat blábol, stejně ho tam napíše, tato validace je předpokládám spíš k vyřazení speciálních znaků, které by mohly dělat neplechu.
Mufna
Profil
AM_
$regexp = '/^[a-zA-ZáčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ \\.\\\']+$/';
Není tam tohle lomítko už navíc ? Nemá to být bez něj ?
Jan Tvrdík
Profil
Mufna:
Není tam tohle lomítko už navíc ? Nemá to být bez něj ?
Nemyslím si. První lomítko escapuje druhé lomítko a druhé lomítko escapuje tečku.
(Akorát si nejsem jist, proč by se apostrof měl escapovat třemi lomítky.)
Mufna
Profil
Jan Tvrdík
První lomítko escapuje druhé lomítko a druhé lomítko escapuje tečku

V obou případech (s jedním lomítkem nebo se dvěma) mi to vypíše, že regulár vypadá stejně, tedy:

/^[a-zA-ZáčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ \.\'\-]+$/

EDIT: Oproti původnímu výrazu je na konci ještě přidán znak -, což ale na výše uvedené nemá vliv.
Jan Tvrdík
Profil
Mufna:
Omlouvám se, máš pravdu. To lomítko je tam skutečně zbytečně.
Mufna
Profil
Jan Tvrdík
Omlouvám se

Nemáš zač se omlouvat. Já reguláry začínám používat až teď a protože do toho zas tak moc nevidím, tak jsem se zde zeptal, takže jsem spíš vděčný, že mi někdo poradí. Ale postupně se člověk učí :-), tak pak začíná diskutovat, jestli to a to je nutné nebo ne.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: