2016-04-26 12 views
2

Meine Regex-Whitelist testet auf Abfrageparameter. Wenn ich einen Parameter <img> passieren, es ist nicht den < oder > fängtWarum fängt meine Regex-Whitelist keine Klammern?

<% 
Function FoundSpecialChar(strInput) 
    On Error Resume Next 
    Dim objRegExp 
    Set objRegExp = New Regexp 
    objRegExp.IgnoreCase = True 
    objRegExp.Global = True 

    objRegExp.Pattern= "^[^-A-Za-z0-9 ]+$" 

    if objRegExp.Test(strInput) then 
     FoundSpecialChar= true 
     exit function 
    end if 

    FoundSpecialChar= false 

    Set objRegExp = Nothing 
End Function 
%> 
+0

Das ist VBScript, oder? Wenn es ist, bitte markieren Sie es als solches. –

+1

Ich hoffe, dass Sie Regex nicht verwenden, wo Sie einen Parser verwenden sollten. Nachdem Sie das gesagt haben: versuchen Sie ein Regex-Muster von '[A-Za-z0-9 \ <\>]' Ich habe kein Microsoft zur Verfügung, um das zu testen. – Paulb

+0

Wir verwenden keinen Parser für klassische asp. Sollten wir? – runners3431

Antwort

3

Ihren regulären Ausdruck sagt:

^    # Starting at the beginning of the line, 
[^-A-Za-z0-9 ] # look for anything OTHER than dashes, letters, numbers, or space 
+    # one or more times 
$    # until the end of the line 

es nur wahr zurück, wenn genau das passiert. So wird es übereinstimmen:

^@#$ 
! 
<> 

und andere mögen es.

Sobald Sie Buchstaben, Zahlen, Leerzeichen oder den Strich irgendwo in der Zeile haben, gibt der Regexp den Wert false zurück.

Wenn Sie nach dem Vorhandensein dieser Sonderzeichen an einer beliebigen Stelle in der Zeichenfolge suchen, müssen Sie wahrscheinlich die Zeichen^und $ entfernen.

+0

Danke. Das schien zu funktionieren. – runners3431

Verwandte Themen