Autor Zpráva
koumal
Profil *
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
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 *
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
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 *
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 *
A to by taky šlo, dík

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0