Lze nějak do regexpu doplnit modifikátor?

Kcko
Člen | 468
+
0
-

Mám takovou základní ochranu proti spamu, nicméně REGEXP nefunguje, když člověk odentruje v textaree.

Modifikátor „m“ mi vůbec nefunguje, lze to nějak zapsat?

<?php
	$form->addTextArea('message', 'Dotaz')
				 ->setRequired('Vyplňte text Vašeho dotazu')
				 ->addRule($form::PATTERN,
				 	'Zadejte prosím alespoň jedno slovo s diakritikou (detekce proti spamu)',
				 	'.*(ě|š|č|ř|ž|ý|á|í|é|ť|ó|ú|ů|ň|Ě|Š|Č|Ř|Ž|Ý|Á|Í|É|Ť|Ó|Ú|Ů|Ň).*');
		}

?>
uestla
Backer | 799
+
+1
-

@Kcko Teoreticky můžeš místo .* použít [\s\S]*. Je to sice workaround, ale funguje :-)

Kcko
Člen | 468
+
0
-

uestla napsal(a):

@Kcko Teoreticky můžeš místo .* použít [\s\S]*. Je to sice workaround, ale funguje :-)

Už jsem to předělal na addrule s vlastní funkcí, ale vyzkouším, škoda proč vůbec nepodporuje modifikátory / kvantifikátory.

uestla
Backer | 799
+
+2
-

Je to kvůli kompatibilitě s HTML atributem pattern, který taky nepodporuje modifikátory a matchuje celý uživatelský vstup (což dává smysl) – https://github.com/…extInput.php#L109

Ten ale existuje jen u jednořádkových inputů, u textarey ne – nicméně formulářové pravidlo jako takové se musí chovat vždycky stejně. Jediné, co je v tuhle chvíli možné použít a změnit tak „modifikátor“ reguláru, je pravidlo Form::PatternInsensitive, ale to neřeší tvůj případ. Takže bych použil ten workaround :-)

Kcko
Člen | 468
+
0
-

uestla napsal(a):

Je to kvůli kompatibilitě s HTML atributem pattern, který taky nepodporuje modifikátory a matchuje celý uživatelský vstup (což dává smysl) – https://github.com/…extInput.php#L109

Ten ale existuje jen u jednořádkových inputů, u textarey ne – nicméně formulářové pravidlo jako takové se musí chovat vždycky stejně. Jediné, co je v tuhle chvíli možné použít a změnit tak „modifikátor“ reguláru, je pravidlo Form::PatternInsensitive, ale to neřeší tvůj případ. Takže bych použil ten workaround :-)

To mě vůbec nenapadlo, ale dává to smysl, díky za objasnění, nakonec jsem to použil :-) protože můj validátor add vlastní funkce, fungoval dobře a jak jsem chtěl, ale ne v live validaci a psát zvlášt se mi už nechtělo.