Kezdőoldal » Számítástechnika » Programozás » Regex házszámhoz. Hogyan?

Regex házszámhoz. Hogyan?

Figyelt kérdés

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?



2014. jún. 3. 23:44
 1/8 anonim ***** válasza:
100%

\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 :)

2014. jún. 3. 23:50
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
100%

#1 vagyok, folyt.:

Az átalakítás meg ugye annyi, hogy kidobsz minden [^0-9a-z] karaktert.

2014. jún. 3. 23:53
Hasznos számodra ez a válasz?
 3/8 A kérdező kommentje:

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!

2014. jún. 4. 00:03
 4/8 A kérdező kommentje:
Végiggondolva amit a második hozzászólásodban írtál elég lenne preg_replace-el kidobni minden nem szám és nem betű karaktert :) sokkal egyszerűbb megoldás, igazad van.
2014. jún. 4. 00:12
 5/8 anonim ***** válasza:

#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

2014. jún. 4. 00:29
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:

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;

}

2014. jún. 4. 00:45
 7/8 A kérdező kommentje:

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...

2014. jún. 4. 01:04
 8/8 A kérdező kommentje:

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ű

2014. jún. 4. 01:07

További kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!