Autor | Zpráva | ||
---|---|---|---|
koumal Profil * |
#1 · Zasláno: 19. 8. 2012, 13:18:00
Můžete mi poradit regulární výraz na vyhledání výsledku, který není písmeno, ani žádný jiný nečíselný znak, kromě tečky?
Například řetězec 142.5 nenajde nic, ale 142,5 najde čárku. Například řetězec blabla najde blabla. Nejdříve jsem to zkoušel pomocí třídy [^\D\.] a pak jsem si uvědomil, že toto nemůže fungovat, protože když porovnává znak, tak se ptá jestli "není číslo" nebo "není tečka". Což vždy bude PRAVDA. |
||
Keeehi Profil |
#2 · Zasláno: 19. 8. 2012, 13:36:16
koumal:
Kdyby třídy fungovali tak jak píšeš, byly by úplně nepoužitelné, jelikož při více jak jednom znaku by to byla "pravda". Třídy fungují jinak. Mám problém s pochopením první věty kvůli více záporům. Jediné co vím určitě, že v tom nesmějí být písmena. I když to neodpovídá tomu, že to má najít blabla. 1) chcete a) zakázat některé znaky, jejichž výčet znáte? b) povolit je omezené množství znaků, jejichž výčet znáte? 2) @ je nyní zástupný symbol místo něj se dosadí právě ten výčet povolených znaků. Následuje několik možností z kterých si vyberte, co vám sedí nejlépe. pro a) '~[^@]*~' '~^[^@]*$~' '~[^@]+~' '~^[^@]+$~' '~(^|\s)[^@]+(\s|$)~'
pro b) '~[@]*~' '~^[@]*$~' '~[@]+~' '~^[@]+$~' '~(^|\s)[@]+(\s|$)~'
|
||
koumal Profil * |
#3 · Zasláno: 19. 8. 2012, 13:44:53 · Upravil/a: koumal
Jo tak jsem to spletl.
Takže raději vysvětlím co chci dělat. Chi překontrolovat daný řetězec jestli obsahuje některé nepovolené znaky a pokud tyto znaky obsahuje, tak chci zobrazit chybovoou hlášku, že daný znak (viz výsledek) nesmí být obsažen ve výsledku. Takže hledám vlastně ty zakázané znaky: Podmínka hledání tedy zní: má to být písmeno nebo jakýkoliv nečíselný znak, kromě tečky. Což by se dalo zredukovat na větu: jakýkoliv nečíselný znak, kromě tečky |
||
Keeehi Profil |
#4 · Zasláno: 19. 8. 2012, 14:07:26
Pokud jsem to správně pochopil, tak zakázané znaky jsou číslice a tečka. Pak by to vypadalo takto:
if ( preg_match('~[\d.]~',$vstup) ) { echo "ERROR"; } else { echo "OK"; } |
||
koumal Profil * |
#5 · Zasláno: 19. 8. 2012, 14:14:03
Ne právě naopak.
Číslice a tečka jsou povolené. Zakázané jsou ty co hledám, ty co chci zobrazit. |
||
Keeehi Profil |
Jediné povolené znaky:
.0123456789
if ( preg_match('~[^\d.]~',$vstup) ) { echo "ERROR"; } else { echo "OK"; } |
||
koumal Profil * |
#7 · Zasláno: 19. 8. 2012, 14:19:23
A to by taky šlo, dík
|
||
Časová prodleva: 12 let
|
0