qualitum logo
preg_match fråga

PHPportalen Forum Index » PHP Mjukstart
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
DrViolet



Medlem i: 1175 dagar

Status: Offline



#721762
Inlägg Skrivet: 2012-03-19 13:07      Ämne: preg_match fråga Citera

Om jag vill kontrollera att en sträng har följande format:

siffror|kr|siffror|st

Godkända exempel:
1kr19st
999kr1st
1000kr99999st

Icke godkända exempel:
kr10st
1krst
10kr11st12

Hur kan man göra det i preg_match? Det verkar inte helt enkelt att förstå på de exemplen jag sett. Tips?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Azreal
Administratör



Medlem i: 2786 dagar
Från: Uppsala, bor i Göteborg
Status: Offline



#721764
Inlägg Skrivet: 2012-03-19 13:19      Ämne: Citera

Hur är informationen lagrad?
Har du en avgränsare såsom du beskriver i början av inlägget?
Eller ser det ut som i dina exempel?
 

_________________
Konsultation via PM, inte gratis.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
DrViolet



Medlem i: 1175 dagar

Status: Offline



#721765
Inlägg Skrivet: 2012-03-19 13:27      Ämne: Citera

Det ser ut som i exemplen. Inga avgränsare av typen |. Funktionen ska testa en sträng av typen

$trythis = "99kr199st";

Skulle följande kunna fungera som matchningsmönster? Problemet är att man inte vet hur många siffror det är. Visserligen räcker det nog att ha mellan 1 till exempelvis 99999.

\b[0-9]+[kr]+[0-9]+[st]\b

Uppdaterat:

Det här verkar fungera:

/\b[0-9]{1,}(kr)[0-9]{1,}(st)\b/

Nu återstår bara att göra så att ingen av siffrorna får vara siffran 0, exempelvis:

0kr10st ska ge felaktigt resultat.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Wedge
Administratör



Medlem i: 3920 dagar
Från: Järfälla
Status: Offline



#721772
Inlägg Skrivet: 2012-03-19 16:20      Ämne: Citera

För att kolla att inte talet framför "kr" är 0 kan du skriva
[1-9][0-9]*
Första siffran är obligatorisk, och skall vara mellan 1 och 9. Sen är det valfritt med 0 till 9 ett valfritt antal ggr efteråt.
 

_________________
Qualitum Webbhotell | Gomoku.se | PHP6.se
Skådebröd är fullt av optisk fiber
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
DrViolet



Medlem i: 1175 dagar

Status: Offline



#721773
Inlägget är accepterad som det rätta svaret Skrivet: 2012-03-19 16:51      Ämne: Citera

Tack. Nu verkar allt funka som det ska. Så här blev det.

KOD:
1:
function control_format($string) {
2:
   return preg_match("/\b[1-9][0-9]*(kr)[1-9][0-9]*(st)\b/", $string);
3:
}
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP Mjukstart
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic
qualitum logo