Permalänk
Medlem

regexp problem

Håller på och mixtrar runt lite med regExp.
Jag vill validera två forms och kontrollera att de innehåller siffror.siffror.siffror.siffror
Alltså Ip-adresser. Vet inte om det är möjligt att validera två forms, som man ju fyller i olika värden i, med samma regexp sats. Men här är iaf min kod och felmesset jag får:

<% Function Validate(strValue)
With New RegExp
.Pattern="^[0-5]+\.[0-5]+\.[0-5]+\.[0-5]+\.$"
Validate("ipadress") and Validate("netmask") =.IP(StrValue)
End With
End Function

If not Validate(Request.Form("ipadress") AND Request.Form("netmask")) Then
Response.Write("Något av fälten innehåller ogiltiga tecken")

Else %>

Fel:

Körningsfel i Microsoft VBScript fel '800a0006'

Spill: '[number: 2552552550]'

/ipsecurity.asp, rad 36

Visa signatur

N/A

Permalänk
Medlem

If not Validate(Request.Form("ipadress") AND Request.Form("netmask")) Then borde väl vara If Not (Validate(Request.Form("ipadress")) And Validate(Request.Form("netmask"))) Then

Validate("ipadress") and Validate("netmask") =.IP(StrValue) förstår jag inte riktigt. Jag skulle skriva: Validate = .Test(strValue)

Du har också en extra punkt i slutet på Pattern.

Permalänk
Medlem

Fixade det innan.
Dock har ett nytt problem uppstått..

Körningsfel i Microsoft VBScript fel '800a0007'

Out of memory.: 'Pattern'

/ipsecurity.asp, rad 31

Function Validate(strValue)
With New RegExp
.Pattern="^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$"
Validate("ipadress") and Validate("netmask") =.IP(StrValue)
End With
End Function

If not (Validate(Request.Form("ipadress")) AND Validate(Request.Form("netmask"))) Then
Response.Write("Något av fälten innehåller ogiltiga tecken")

Else

Där rad 31 är .Pattern osv...

Visa signatur

N/A

Permalänk
Medlem
Visa signatur

Don't try to fix me - I'm not broken

Permalänk
Medlem

Du har fortfarande kvar

Validate("ipadress") and Validate("netmask") =.IP(StrValue)

Det kan nog resultera i oändlig rekursion som äter upp allt minne.

Permalänk
Medlem

Okej.. nu har jag skrivit om regexp koden efter artikeln som goose postade.
Där fanns en del variabler som dock inte fungerade i ASP.. gjorde om det litet och nu får jag följande mess:

Körningsfel i Microsoft VBScript fel '800a01a8'

Objekt krävs.: ''

/ipsecurity.asp, rad 34

Hela koden:

Dim objRe
With New RegExp
Dim strForm
Dim strForm2
objRe.Pattern="^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$"
strForm = "" & Request.Form("ipadress") & ""
strForm2 = "" & Request.Form("netmask") & ""
If objRe.Test(strForm) AND objRe.Test(strForm2) = false Then
Response.Write("Något av fälten innehåller ogiltiga tecken.")

Else

mer kod här

End With
Set Validate = Nothing
End If

Line 34 är objRe.Pattern="^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$"

Visa signatur

N/A

Permalänk
Medlem

Du har inte skapat något objekt som heter objRe.

Permalänk
Medlem

Hur menar du?

Visa signatur

N/A

Permalänk
Medlem

objRe = New RegExp

Permalänk
Medlem

Då kan jag ta bort End With va?
Om jag gör det så för jag följande:

Körningsfel i Microsoft VBScript fel '800a01b6'

Objektet stöder inte egenskapen eller metoden.

/ipsecurity.asp, rad 33

EDIT: rad33: objRe = New RegExp

Visa signatur

N/A

Permalänk
Medlem

Det var länge sen jag skrev ASP-kod.

Set objRe = New RegExp

ska det nog vara.

Permalänk
Medlem

Japp! nu fungerar det.. men givetvis tar felen inte slut där heller

Får nu felmess på en rad som tidigare fungerat.

Körningsfel i Microsoft VBScript fel '800a0005'

Ogiltigt proceduranrop eller argument.

/ipsecurity.asp, rad 58

Är denna:
Set SecObj2 = GetObject("IIS://LocalHost/W3SVC/1/Root")

Det är en del av koden som ligger efter regexpen.

EDIT: Kolla hela koden här: http://hashasp.mine.nu/paster/?id=157

Visa signatur

N/A

Permalänk
Medlem

Kan tipsa om det här programmet för att testa sina regExp uttryck.
http://laurent.riesterer.free.fr/regexp/
Inte värdens bästa gränssnitt.