ugrás a tartalomhoz

Regexp kérdés

reagenross · 2010. Nov. 22. (H), 21.06
Sziasztok,

adott a következő ellenőrzés:

preg_match ('^[0-9]{1,2}$^', $változó)

Ha jól értelmeztem a regexet akkor a { } -el azt lehet beállítani, hogy a megelőző csoportból mennyit engedjen át tehát a fenti példának 2 0-9 is terjedő számjegyet kellene átengednie. Nálam viszont 3 számjegyet is átenged. Mi lehet ennek az oka?
 
1

Azt a szabályt állítottad,

Thom · 2010. Nov. 22. (H), 21.46
Azt a szabályt állítottad, hogy a string végén 1 vagy 2 szám legyen.
Ha a szabály teljesül, akkor mindegy, hogy a string végi 2 szám előtt betűk, vagy számok állnak.
Tehát: 'ksfbvnf5' 'kfbvfek56' ezekre teljesül, 'lbvagv123' erre is, de 'kdlsbv12b' erre nem.

Ha azt akarod, hogy a string végi -3. karakter ne szám legyen, ez a kód is jó lehet:
preg_match('^(\D)([0-9]{1,2})$^', $str, $res);
Vagy másképp:
preg_match ('^(\D)(\d{1,2})$^', $str, $res);
Egyébként én nem úgy közelíteném meg, hogy hány számot enged át, hanem hogy létrehoztam egy mintát és az mire illeszkedik.
3

Sikerült, köszi!

reagenross · 2010. Nov. 23. (K), 00.54
Sikerült, köszi!
2

preg_match('/^[0-9]{1,2}$/',

Poetro · 2010. Nov. 22. (H), 23.36
preg_match('/^[0-9]{1,2}$/', $valtozo);
vagy
preg_match('/^\d{1,2}$/', $valtozo);
Te a ^ jelet választottad határoló karakterként, ami nem túl szerencsés.