Odlišný formát zápisu validačního reg exp mezi PHP a JS

Václav Mašín
Člen | 28
+
0
-

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
+
+2
-

Můžeš si vytvořit vlastní validační pravidlo. A u něho nadefinovat jak PHP validaci tak i JS validaci.

https://doc.nette.org/…s/validation#…

Václav Mašín
Člen | 28
+
0
-

Pepino napsal(a):

Můžeš si vytvořit vlastní validační pravidlo. A u něho nadefinovat jak PHP validaci tak i JS validaci.

https://doc.nette.org/…s/validation#…

Wow, opravdu funguje! :-) Díky moc.