Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Ahoj, nedaří se mi vytvořit regulární výraz, kterým bych otestoval, zda je zadaný řetězec matematickým číselným výrazem, který může obsahovat pouze číslice, operátory +, -, *, /, ^, dále kulaté závorky ( a ) a také řetězec sqrt (nikoliv třeba sqr). Smysluplnost výrazu netestuji, stačí mi pouze výše uvedené podmínky. Já jsem zkusil toto:
preg_match('/^[0-9*-\/^\+\(\)sqrt]+$/', $vstup)
Ale to umožňuje zadat i to sqr...
Máte nápad?
Offline
↑ surovec:
Ahoj, ujistím se: následující řetězce tedy považuješ taky za platné výrazy?
+*2
3)(
Ale neznám syntaxi php, podle mě v hranatých závorkách uvádíš jen znaky a ne celé řetězce, takže ti to asi uzná třeba i výraz "q" apod.
možná bys potřeboval něco jako ([...] | sqrt )*
Offline
↑ check_drummer:
Jj, jde mi jen o to, aby uživatel nemohl zadávat nějaké svoje hackerské příkazy (obsahující třeba příkaz DELETE ;-)), ale aby tam bylo možné zadat jednoduchý matematický výraz.
Dal jsem to sqrt do závorky a už to dělá co má, díky za reakci!
Offline
↑ surovec:
Akorát pozor, že pomocí některých znaků výrazu můžeš taky způsobit hackování - třeba dvě dělítka za sebou (//) může někdy znamenat komentář.... A ten když vložíš do kódu může způsobit taky paseku.
Offline