Klassische ASP - Regular Expression-Funktion
Ich haben gerade zusammen das regExp-Funktion überprüft den Inhalt einer Zeichenkette. Sollte der string nur zahlen enthalten, Briefe, fullstops (.), Bindestrichen (-), at-Zeichen (@) und Apostrophe (').
If Trim(Request("searchStr")) <> "" Then
Function validateSearchStr(searchStr)
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Pattern = "[\w'-@.]"
validateSearchStr = regEx.Test(searchStr)
End Function
If NOT validateSearchStr(Trim(Request("searchStr"))) Then
Response.Redirect("error/?e=badInput")
End If
End If
Aber dieses scheint nicht, etwas zu tun, überhaupt. Ich kann geben Sie alle Zeichen und Symbole, und die Fehler-Seite wird nicht ausgelöst.
Ist es offensichtlich?
- Danke für den edit, ich habe die code-tags - oopsie :-p
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst aus, wenn Sie angeben möchten, dass ein literal Bindestrich in der Charakter-Klasse, die Sie benötigen, zu entkommen (also backslash) es:
regEx.Pattern = "[\w'\-@.]"
.Zweite, beachten Sie
\w
ermöglicht es unterstreicht, wie gut-wenn Sie nicht wollen, dass die NutzungA-Za-z0-9
.Sekunde aus, es sieht aus wie
validateSearchStr
nur tests, wenn es alle Zeichen im string, die entspricht deine regex.Also der searchstring 'abcasdf#ljasdf' ist ungültig, aber da passt es
[A-Za-z0-9'\-@.]
(zum Beispiel das erste "a" entspricht), wird kein Fehler ausgegeben.Ich denke, Sie sollten, statt zu testen, ob es irgendwelche illegale Zeichen. also:
Hinweis: die
^
im Charakter-Klasse, die sagt: "alle Zeichen aber diese".Nun die
regEx.Test
TRUE zurück wenn es ein schlechtes Zeichen im Suchtext.So benennen Sie
validateSearchStr
zuisSearchStrBad
und tun:(Beachten Sie, wenn Sie möchten, um zu testen, ob die gesamte string gültig ist dein regex müsste
"^[A-Za-z0-9'\-@.]+$]"
, d.h., dass jedes Zeichen der Zeichenfolge entspricht, nicht nur einen Charakter).regEx.Test
sollte True zurückgeben. Also der regex ist in Ordnung. Warum der code nicht funktioniert - ich bin mir nicht sicher, ob ich Ihnen helfen kann 🙁 ASP ist nicht so mein Ding. Vielleicht könnten Sie versuchen, die zweite regex (in action hier) zum überprüfen der gesamten Zeichenfolge im Gegensatz zu bemerken, dass ein schlecht string? viel Glück!