Odlišný formát zápisu validačního reg exp mezi PHP a JS
- Václav Mašín
- Člen | 28
Zdravím,
zadání je, aby validací textového prvku formuláře prošel jen text tvořený znaky v latince (tj. ne např. v cyrilici), plus běžné symboly (±,. atd.).
V PHP by tedy mělo jít o reg exp něco jako:
^(\p{Latin}|\p{Common})+$
Tomuto zápisu nicméně JS nerozumí – tam to musí být:
^(\p{Script=Latin}|\p{Script=Common})+$
(nebo popř.:
^(\p{sc=Latin}|\p{sc=Common})+$
)
Pokud by nebylo žádné oboustranně funkční řešení (jakože mě
žádné nenapadlo), tak bych preferoval validaci v prohlížeči. Takže
v tuto chvíli zkouším do toho validačního pravidla dávat ten JS formát.
To sice v prohlížeči validuje správně, ale na serveru pak při submitu po
zásluze zkolabuje s „Nette\Utils\RegexpException
Compilation failed: unknown property name after \P or \p at offset 22 in
pattern…“.
Pokoušel jsem se tedy následně nějak vymyslet, jak v této chvíli celou server-side validaci vypnout, aby se ten formulář ani nepokoušel to PHP-nekompatibilní pravidlo zpracovat. Překvapivě se ale nezadařilo.
Nechalo by se v Nette s touto situací nějak (i jakkoli jinak) vypořádat?
Díky.
- Pepino
- Člen | 256
Můžeš si vytvořit vlastní validační pravidlo. A u něho nadefinovat jak PHP validaci tak i JS validaci.
- Václav Mašín
- Člen | 28
Pepino napsal(a):
Můžeš si vytvořit vlastní validační pravidlo. A u něho nadefinovat jak PHP validaci tak i JS validaci.
Wow, opravdu funguje! :-) Díky moc.