Regex házszámhoz. Hogyan?
Php-ban szeretném a felhasználók által megadott házszámokat egyforma alakra hozni preg_match-el. Nem tűnik túl bonyolultnak de nem akar összejönni. Tehát nem a sima házszámmal van a gond hanem:
"7.b" "7/b" "7. b" "7b" "7./b" "7\b" "7.\b" változatokat akarom pl "7b"-re hozni. Természetesen a sima házszámokat is elfogadja: "7" és "7." -> "7"
Mindezt 0-999-es terjedelemben. Ha csak betűt adnak meg szám nélkül, akkor ne fogadja el. Van ötletetek működő "pattern"-re?





\d+[\.\/\\ ]*[a-z]?
Teszt szövegem:
"7.b" "7/b" "7. b" "7b" "7./b" "7\b" "7.\b" 7
rubular.com-on teszteltem, ott mindegyikre illesztett :)





#1 vagyok, folyt.:
Az átalakítás meg ugye annyi, hogy kidobsz minden [^0-9a-z] karaktert.
Köszönöm!
Kissé átalakítottam még amit írtál és azt hiszem így tökéletes lesz! :)
(\d{1,})+[\.\/\\ ]*([a-z])?
Még egyszer köszi!





#1-#2 vagyok
:)
Vagy, plot twist: az elején dobod ki ezeket a karaktereket és akkor csak \d+[a-z]? mintára kell tesztelni. :D
igen úgy csináltam!:)
"kicsit" redundáns lett (lusta voltam átírni, szóval lehet még belejavítok) de legalább "hülyebiztos" :D
function hazszam_formaz($hazszam)
{
$hazszam = preg_replace('/[^0-9a-z]/', '', strtolower($hazszam));
preg_match("/^(\d{1,})+[\.\/\\ ]*([abcdefghijklmnopqrstuvwxyz])?$/", $hazszam, $tomb);
if($tomb)
{
$tomb = array_unique($tomb);
return implode("",$tomb);
}
else return 0;
}
Javított:
function hazszam_formaz($hazszam)
{
$hazszam = preg_replace('/[^0-9a-z]/', '', strtolower($hazszam));
preg_match("/^(\d{1,})([abcdefghijklmnopqrstuvwxyz])?$/", $hazszam, $tomb);
if($tomb)
{
$tomb = array_unique($tomb);
return $tomb[0];
}
else return 0;
}
Kimenet:
7b => 7b
14.C => 14c
630/A => 630a
8. => 8
9./a => 9a
10. /C => 10c
7 => 7
8bé => 8b
63.\A => 63a
F?3 => 0
Ha esetleg szüksége lenne másnak is ilyenre...
akinek pedig X.y formátumra van szüksége:
$tomb[1] -> csak a szám, mindenféle karakterek nélkül
$tomb[2] -> betű
További kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!