webForumDet fria alternativet

RegExp hjälp

9 svar · 446 visningar · startad av PDahlen

PDahlenMedlem sedan apr. 2004778 inlägg
#1

Av någon anledning så har det aldrig blivit mig av att jag satt mig in i regular expressions tillräckligt bra.
Ja det får jag sota för nu.
Jag sitter och pillar på en regexp med RegexDesigner.
Det ska kolla följande
Först 2-4 siffror
Sedan - / eller space
Sedan 5-10 siffror och så kan det vara space mellan siffrorna

Mitt första steg
\d{2,4}[-/]\d{5,10}
matchar
först 2-4 siffror
sedan - eller /
sedan siffror utan space

Alla tips och råd tas emot med glädje.

PDahlenMedlem sedan apr. 2004778 inlägg
#2

Nästa steg matchar nästan allt

\d{2,4}[-/\s][\d{2,10}\s]

Dock verkar det bli lite konstigt
Funkar 0150-15911
Funkar ej på sista siffran 0150-159 11

Funkar ej på 2345 08-123456789
Funkar 08-123 456 789

PDahlenMedlem sedan apr. 2004778 inlägg
#3

Fortsätter väl mina försök.

Blir väldigt konfunderad. Tänkte att jag skulle göra det enkelt för mig och istället använda

[\d\/\s\+]

Som då godkänner siffror, -, /, + och space.
När jag testar denna i RegexDesigner så får jag OK på alla olika variationer jag har.
Men när jag lägger in det i koden så bombar det på allt.

Jesper TMedlem sedan nov. 20017 144 inlägg
#4

Kör lite tester här: http://www.webeye.nu/default2.asp?que=asp/regexptester.asp

PDahlenMedlem sedan apr. 2004778 inlägg
#5

Körde test där och har testat även här http://regexlib.com/RETester.aspx
Allt matchar men som sagt, när jag lägger det i koden så matchar inget.

PDahlenMedlem sedan apr. 2004778 inlägg
#6

Förstår inte varför denna inte funkar när RegExp funkar när jag testar i flera olika testappar.

<ASP:REGULAREXPRESSIONVALIDATOR
   id="RegularExpressionValidatorTelefon" 
   VALIDATIONEXPRESSION="[\d{5,10}\s-\+]"
   ERRORMESSAGE="Fel på telefonnumret"
   CONTROLTOVALIDATE="tboxTelefon"
   DISPLAY="None"
   RUNAT="server">
</ASP:REGULAREXPRESSIONVALIDATOR>
PDahlenMedlem sedan apr. 2004778 inlägg
#7

Eftersom jag inte ens kan få de enkla RegExp att validera min kontroll så fortsatte jag att prova mig fram med lite större saker.

^((([\+][\d{1,3}])|([0][\d{1,3}]))[-\s/)([\d{1,10}\s])$

Ovanstående tycker jag borde fungera.

^((([\+][\d{1,3}])|([0][\d{1,3}]))[-\s/)

..ska validera början av strängen

(([\+][\d{1,3}])|([0][\d{1,3}]))

..borde kolla om det är

([\+][\d{1,3}])

ett + och 1-3 siffror
eller

([0][\d{1,3}])

en 0 och 1-3 siffror

([\d{1,10}\s])$

ska kolla slutet av strängen och borde då kolla så att det bara är
siffror i grupper av 1-10 siffror och blanksteg.

Men nåt har jag gjort fel.

Peter SMedlem sedan dec. 20025 483 inlägg
#8
^\d{2,4}(-|\/\s|)(\d\s*){5,10}$

:)

PDahlenMedlem sedan apr. 2004778 inlägg
#9

Lysande, tack!

Om jag vill lägga till en koll för internationella prefix också?
T.ex.
Skall funka
+46 150 159 11
+46150-159 11
+46 0150 159 11
0150-15911
0150 159 11

PDahlenMedlem sedan apr. 2004778 inlägg
#10

Så här blev den slutligen

^(\+(\d{1,3}\s*)|)\d{2,4}(-|/|\s|)(\d\s*){5,10}$

136 ms totalt · 3 externa anrop · v20260731065814-full.2ca38e60
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)