webForumDet fria alternativet

RegExp: Göra nummer till länkar!

ASP

12 svar · 749 visningar · startad av oskars

Medlem sedan nov. 20051 317 inlägg
Frågan#1

Tjenare,

jag är helt lost vad gäller RegExp... eller ja, inte helt kanske... Jag förstår att man genom ett mönster letar fram det man vill "göra om" eller vad man nu vill göra.

Det här behöver jag hjälp med:
Jag har en ganska lång sträng som heter "TempTel"... Den kan se ut så här ungefär:

Bla Bla Bla Bla  0701234567 Bla Bla Bla Bla 08498416 Bla Bla Bla Bla

Jag vill göra detta med strängen:
Leta igenom alla möjliga telefonnummer... T.ex är ju alla mobilnummer alltid 10st siffror, men vill även leta fram alla övriga möjliga telefonnummer. Alla har alltid riktnummer i sig. Och sen vill jag presentera dom i en fin lista:
* 0701234567
* 08498416
(vill gärna göra telefonnumrena till länkar i listan också)

så typ "For Each RegExp-Telnr in TempTel" sen Loopa... eller nått =)

Tacksam för hjälp!

Oz

Oskar

Medlem sedan nov. 20051 317 inlägg
#2

Någon som vill hjälpa mig? =)

Medlem sedan juni 20019 519 inlägg
#3
<%
Function GetNumbers(str)
  Dim reg,RegExpMatch,RegExpNumber,lMatchCount,ReturnString
  set reg = new RegExp
  reg.IgnoreCase = True
  reg.Global = True
  reg.Pattern = "(0[1-9]\d+)" 'Kan ta bort [1-9] om du även vill träffa på: 0046 exempelvis.
  Set RegExpMatch = reg.Execute(str)
  lMatchCount = RegExpMatch.Count
  If lMatchCount Then
    ReturnString = "<ul>"
    For Each RegExpNumber In RegExpMatch
      ReturnString = ReturnString & "<li>" & RegExpNumber.SubMatches(0)
    Next
    ReturnString = ReturnString & "</ul>"
  End If
  GetNumbers = ReturnString 
End Function

Response.Write GetNumbers("Bla Bla Bla Bla  0701234567 Bla Bla Bla Bla 08498416 Bla Bla Bla Bla")
%>

Kanske?

Medlem sedan nov. 20051 317 inlägg
#4

Hm. får syntaxfel på Function GetNumbers(str)... försökte hitta orsaken till det på google... men utan lycka

:)

Medlem sedan juni 200032 967 inlägg
#5

Var någonstans får du felmeddelande? Var har du lagt funktionen?

Medlem sedan nov. 20051 317 inlägg
#6

Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A03EA)
Syntaxfel
/wip/kundkortTable.inc, line 142

Red 142: Function GetNumbers(str)

Jag har lagt funktionen precis så som voigtann skrev ut den!

Medlem sedan juni 200032 967 inlägg
#7

Jag har lagt funktionen precis så som voigtann skrev ut den!

Det var väl inget svar på frågan "var"? :)

Hur ser koden runt om ut?

Medlem sedan nov. 20051 317 inlägg
#8

som en gröt typ. :r


					<input TYPE="hidden" NAME="display" onFocus="this.blur()" size="20">
					<input name="spara" type="hidden" value="spara" />
					<input name="id" value="<%=RecSet("ID")%>" type="hidden" />
					
					<div class="boxbg">					
						<label for="fordon">Fordon:</label><br class="nobr" />
						<input name="fordon" value="<%=RecSet("Fordon")%>" type="text" class="textfield" id="fordon" />
						<div style="margin:0 0 0 99px;padding:0;">Årsmod: <input name="arsmodell" type="text" value="<%=RecSet("Arsmodell")%>" style="width:15px;" /> Inköpt:  <%=RecSet("FordonDat1")%> Ägarbyte: <%=RecSet("FordonDat2")%></div>
					</div>
					
					<div class="boxbg">			
						<label for="name">Namn:</label><br class="nobr" />
						<input name="namn" value="<%=RecSet("Namn")%>" type="text" class="textfieldhighlight" id="name" />
						<br />
						<label for="eftername">Efternamn:</label><br class="nobr" />
						<input name="efternamn" value="<%=RecSet("Efternamn")%>" type="text" class="textfieldhighlight" id="eftername" />
					</div>
					
					<div class="boxbg">	
						<label for="att">Att:</label><br class="nobr" />
						<input name="adressrad1" value="<%=RecSet("Adressrad1")%>" type="text" class="textfield" id="adressrad1" />
						<br />
						
						<label for="att">Gatuadress:</label><br class="nobr" />
						<input name="adressrad2" value="<%=RecSet("Adressrad2")%>" type="text" class="textfieldhighlight" id="adressrad2" />
						<br />
						
						<label for="name">Postnr/Ort</label><br class="nobr" />
						<input name="postnummer" value="<%=RecSet("Postnummer")%>" type="text" class="textfield" style="width:50px;" onkeyup="if(!this.value.match(/^\d+$/)){ this.value=(this.value.match(/\d+/))?this.value.match(/\d+/):''; }"  style="background-color:#FFFFCC;" />
						<input name="ort" value="<%=RecSet("Ort")%>" type="text" class="textfieldhighlight" id="ort" style="width:236px;" />
					</div>
					<%
						' Jag lägger den här variabeln här så jag vet att jag har den! Annars funkar inte unikKund.inc...
						' ...sjukt, det funkar om raden ligger ovan textfältet, men inte under. blä!
						Dim Personnummer
						Personnummer = RecSet("Personnummer")
					%>
					<label for="personnummer">Persnr.:</label><br class="nobr" />
					<input name="personnummer" value="<%=Personnummer%>" type="text" class="textfield" id="personnummer" />
					<br />
					<label for="telefon">
					<a href="http://www.lokaldelen.se/ld/white/resultat.do?advanced=true&exact_firstname=&name=&exact_lastname=&lastname=<%=Efternamn%>&city=&exact_address=&address=&zip=<%=Postnummer%>&ort=<%=Ort%>&phone=&Image51.x=22&Image51.y=9" target="_blank">
						Telefon:
					</a>
					</label><br class="nobr" />
					
					<%
						
						TempTel = RecSet("TempTel")
						TempTel2 = TempTel
						IDNr = RecSet("ID")
						Telnr = RecSet("Telnr")
						
						If IsNull(Telnr) Then
						
						If InStr(TempTel,"MULTIPLE") Then
							TempTel = Replace(TempTel,">","")
							TempTel = Replace(TempTel,"<","")
							TempTel = Replace(TempTel,"-","")
							TempTel = Replace(TempTel,"*","")
							TempTel = Replace(TempTel,"HIT","")
							TempTel = Replace(TempTel,":","")
							TempTel = Replace(TempTel,";","")
							TempTel = Replace(TempTel,")","")
							TempTel = Replace(TempTel,"!","")
							TempTel = Replace(TempTel,"/","")
							TempTel = Replace(TempTel,"+46","0")
							TempTel = Replace(TempTel,"Mobil","")
							TempTel = Replace(TempTel,"Tel","")
							TempTel = Replace(TempTel,"br ","")
							TempTel = Replace(TempTel,"Nummer=","<br/><b>NUMMER:</b>")
							TempTel = Replace(TempTel,"MULTIPLE","<b>FLERA NUMMER!</b><br />")
							TempTel = Replace(TempTel,"sphoneid telnr=","<br /><b>NUMMER:</b>")
						%>
							<input name="telefon" value="Flera nummer -->" type="text" class="textfieldhighlight" id="telefon" style="width:279px;" />
						<%
							Else
							
							If NOT IsNull(TempTel) Then
								TempTel = Replace(TempTel,">","")
								TempTel = Replace(TempTel,"<","")
								TempTel = Replace(TempTel,"-","")
								TempTel = Replace(TempTel,"*","")
								TempTel = Replace(TempTel,"HIT","")
								TempTel = Replace(TempTel,":","")
								TempTel = Replace(TempTel,";","")
								TempTel = Replace(TempTel,")","")
								TempTel = Replace(TempTel,"!","")
								TempTel = Replace(TempTel,"/","")
								TempTel = Replace(TempTel,"sphoneid telnr=","")
								TempTel = Replace(TempTel,"Tel","")
								TempTel = Replace(TempTel,"+46","0")
								TempTel = Replace(TempTel," ","",2, 1)
								TempTel = Replace(TempTel,"fil","")
								TempTel = Replace(TempTel,"Mobil","")
								TempTel = Replace(TempTel,"obil ","")
								TempTel = Replace(TempTel,"NUMMER:","")
							Else
								TempTel = ""
							End If
						%>
							<input name="telefon" value="<%=Left(TempTel,10)%>" type="text" class="textfieldhighlight" id="telefon" style="width:279px;" />
						<% End If %>
						<% Else 
						
							If NOT IsNull(TempTel) Then
							TempTel = Replace(TempTel,">","")
							TempTel = Replace(TempTel,"<","")
							TempTel = Replace(TempTel,"-","")
							TempTel = Replace(TempTel,"*","")
							TempTel = Replace(TempTel,"HIT","")
							TempTel = Replace(TempTel,":","")
							TempTel = Replace(TempTel,";","")
							TempTel = Replace(TempTel,")","")
							TempTel = Replace(TempTel,"!","")
							TempTel = Replace(TempTel,"/","")
							TempTel = Replace(TempTel,"+46","0")
							TempTel = Replace(TempTel,"Mobil","")
							TempTel = Replace(TempTel,"Tel","")
							TempTel = Replace(TempTel,"br ","")
							TempTel = Replace(TempTel,"999999 ","")
							TempTel = Replace(TempTel,"Nummer=","")
							TempTel = Replace(TempTel,"MULTIPLE","<b>FLERA NUMMER!</b><br />")
							TempTel = Replace(TempTel,"sphoneid telnr=","<br /><b>NUMMER:</b>")
							End If						
						%>
							<input name="telefon" value="<%=Telnr%>" type="text" class="textfieldhighlight" id="telefon" style="width:279px;" />						
						<% End If %>
						
						<a onclick="javascript:show('root');"><img src="tel.gif" style="margin:0 0 2px 0;" /></a>
						<%
							If Request.Cookies("TempTel") = "0" Then
								Response.Write("<div id=""root"" style=""top:402px;left:129px;"">")
							Else
								Response.Write("<div id=""root"" style=""top:402px;left:129px;display:block;"">")
							End If
						%>
						
							<div id="handle"></div>
							<p style="margin:15px;">
							<%
								Function GetNumbers(str)
									Dim reg,RegExpMatch,RegExpNumber,lMatchCount,ReturnString
									set reg = new RegExp
									reg.IgnoreCase = True
									reg.Global = True
									reg.Pattern = "(0[1-9]\d+)" 'Kan ta bort [1-9] om du även vill träffa på: 0046 exempelvis.
									Set RegExpMatch = reg.Execute(str)
									lMatchCount = RegExpMatch.Count
									
									If lMatchCount Then
									
										ReturnString = "<ul>"
										
										For Each RegExpNumber In RegExpMatch
											ReturnString = ReturnString & "<li>" & RegExpNumber.SubMatches(0)
										Next
										
										ReturnString = ReturnString & "</ul>"
									
									End If
									
									GetNumbers = ReturnString 
								End Function
								
								Response.Write GetNumbers("Bla Bla Bla Bla  0701234567 Bla Bla Bla Bla 08498416 Bla Bla Bla Bla")
							%>
							<br />
							<br />
							<span style="font-size:20px;"><a onclick="javascript:hide('root');">Stäng fönstret!</a></span>
							</p>
						</div>
											
						<script language="javascript">
							var theHandle = document.getElementById("handle");
							var theRoot   = document.getElementById("root");
							Drag.init(theHandle, theRoot);
						</script>
						
					<br />
					<label for="mobil">Mobil:</label><br class="nobr" />
					<input name="mobil" value="<%=RecSet("Mobil")%>" type="text" class="textfieldhighlight" id="mobil" />
					<br />
					<label for="email">E-mail:</label><br class="nobr" />
					<input name="email" value="<%=RecSet("Email")%>" type="text" class="textfield" id="email" />
					<br />
					<label for="kommentar">
					<a href="#" onClick="alert('Kommentarer\n\nKommentarer som underlättar vid nästa kontakttillfälle.\nT.ex Nöjd med jackan/Har även en Cadillac/Trevlig kille/Har haft 14st tjejer senaste året.\n\nHär ska även anges datum samt tid för när du ska återkomma till kunden.')">Kommentar:</a>
					</label><br class="nobr" />
					<textarea cols="30" rows="15" name="kommentar" id="comment" class="textarea"><%=RecSet("Kommentar")%></textarea>
				</div>
Medlem sedan juni 200032 967 inlägg
#9

Funktioner har ingenting att göra inne i gröt.

Flytta ut funktionen och lägg den för sig själv överst på sidan, eller underst, eller kanske till och med i en includefil med fina funktioner.

Medlem sedan nov. 20051 317 inlägg
#10

Självklart löste det sig efter ditt senaste inlägg!

TACK SOM FAN FÖR HJÄLPEN!

TACK!!

Medlem sedan nov. 20051 317 inlägg
#11

En liten supersnäll fråga bara... hur gör jag om jag itne vill loopa ut telefonnumrena så där... utan bara göra en länk av telefonnumren i strängen som den är?

Hoppas jag inte ber om för mkt nu :r

Medlem sedan juni 20019 519 inlägg
#12
<%
Function JustReplace(str)
  Set objRegExp = New regexp
  objRegExp.Global = true
  objRegExp.IgnoreCase = true
  objRegExp.Pattern = "(0[1-9]\d+)"
  str = objRegExp.Replace(str,"<a href=""#$1"">$1</a>")
  JustReplace = str
end function
%>
Medlem sedan nov. 20051 317 inlägg
#13

PROFFSIGT! Tack återigen!

290 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
157 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)