为什么我的正则表达式白名单没有抓住括号?

时间:2016-04-26 16:24:23

标签: regex vbscript

我的正则表达式白名单正在测试查询参数。当我传递<img>参数时,它没有抓住<>

<%
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
%>

1 个答案:

答案 0 :(得分:3)

你的正则表达式说:

^               # 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

如果发生这种情况,它只会返回true。所以它会匹配:

^@#$
!
<>

和其他人喜欢它。

只要你在任何地方有任何字母,数字,空格或短划线,正则表达式就会返回false。

如果您要在字符串中的任何位置查找这些特殊字符的存在,则可能需要删除^和$字符。