【问题标题】:What is the right Regular Expression for my validation? [closed]我的验证的正确正则表达式是什么? [关闭]
【发布时间】:2016-04-28 16:57:04
【问题描述】:

我在 SO 的帮助下创建了一个基于 RegEx 的验证,并将其传递给我的同事,解释了需要它的原因(将其称为白名单)。然后,同事继续更改我的代码(坚持他们所谓的黑名单)并修改了 RegEx。下面列出了每种方法对应的代码。验证应确保只允许使用连字符、数字、空格和字母。我想知道

  1. 哪些代码片段实现了这一点?
  2. 如何破解我同事的密码?
  3. 黑名单只是条件倒置的白名单吗?

我同事的代码:

objRegExp.Pattern= "[^-A-Za-z0-9'&(). ]"

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

FoundSpecialChar= false
Set objRegExp = Nothing

我的代码:

objRegExp.Pattern= "^[-A-Za-z0-9\s'&().]+"   

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

FoundSpecialChar= true
Set objRegExp = Nothing

【问题讨论】:

    标签: regex vbscript


    【解决方案1】:

    您同事的方法列出了可接受的字符。如果它甚至找到一个不在该列表中的字符,它就会设置FoundSpecialChar= true,这似乎是你想要的。要测试他的代码和您的代码之间的差异,您可以尝试使用strInput = "ABCD#EFGH" 运行这两个代码片段。

    使用strInput = "A#" 运行一次代码,然后使用strInput = "#A" 运行一次代码也会有所帮助。

    顺便说一句,Set objRegExp = Nothing 也应该放在 Exit Function 之前。

    【讨论】:

    • 好的。谢谢。这是有道理的。
    • 如果这回答了您的问题,请投票并接受它作为答案。如果您描述您所做/测试的内容以及您的解决方案,我也会对本项目的未来读者有所帮助。
    【解决方案2】:

    我来自测试背景,从应用程序开发人员的角度来看,我体验过白名单方法很好,而黑名单方法很适合测试应用程序。原因是,作为开发人员,白名单可让您控制允许用户输入的确切输入。另一方面,作为一名测试人员,我会更多地使用黑名单方法,因为它将有无数个选项可供测试。

    关于 SO 的有趣讨论 --> blacklisting vs whitelisting in form's input filtering and validation

    【讨论】:

    • 既然这不是一个答案,您会考虑删除它并添加它作为评论吗? (因为您要添加有用的信息)
    • 我认为他只是在问哪种方法更好。不确定他是否在那里提出了任何特定的编码问题。
    猜你喜欢
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多