Regulární výraz se zpětným lomítkem
- kleinpetr
- Člen | 480
Ahoj, snažím se přidat validátor na regulární výraz, ale nějak se mi nedaří..
Když přidám tenhle pattern:
^[ \p{N}\p{L}\p{M}\p{P}\$\+\<\=\>\^
\|\~]{1,30}$` a vyplním
např Petr
Tak mi neprojde, a když se podívám tak nette tam nejspíš nahrazuje zpětné lomítko za dvě zpětná lomítka.. nevím zda to může být tím. Kdyby někoho něco napadlo, určitě budu vděčnej, díky.
- David Matějka
- Moderator | 6445
muze za to nekompatibilita pcre s javascriptovyma regexama, viz treba http://stackoverflow.com/…a-z-using-pl
- David Matějka
- Moderator | 6445
Doporucuji jako pomocnika https://regex101.com/ – vpravo tam mas explanation. JS validaci bys mohl obejit vlastni validacni podminkou, treba
->addRule(function ($control) {
return preg_match(..., $control->value);
}, '...!')
To nedokaze nette prepsat do javascriptu, takze se provede az pak serverova validace
- David Matějka
- Moderator | 6445
Mohl by sis napsat vlastni validator pro php + js https://doc.nette.org/…s/validation
- David Matějka
- Moderator | 6445
Pokud to chápu tak js tenhle regulár nezvládne a z jakého tedy důvodu
jsem ti to psal, viz ten odkaz na stackoverflow – js nezvlada unicode zkratky
- kleinpetr
- Člen | 480
Díky, takže teroeticky by tohle mělo nějakým způsobem vyřešit můj problém:
//Pro JS
->addRule(Form::PATTERN, '...!', 'pattern bez unicodes');
//Pro PHP
->addRule(function ($control) {
return preg_match(cely pattern, $control->value);
}, '...!')
mám pravdu ?
Editoval kleinpetr (20. 4. 2015 20:53)