vbscript函数clean字符串只允许某些字符

时间:2011-07-15 15:00:46

标签: regex vbscript string-formatting sanitization

到目前为止,我一直在手动添加字符来替换破坏我的代码。我想要更加积极主动,所以我发现这个函数应该替换除了有效字符之外的所有内容。 我的第一个障碍是它似乎不起作用。下面的代码是我的完整测试文件,MsgBox显示为空白。

我的第二个问题是关于表现。此函数处理非常非常大的字符串。这种方法会慢得多吗?有人推荐别的吗?

    Function CleanUp (input)
      Dim objRegExp, outputStr
      Set objRegExp = New Regexp

      objRegExp.IgnoreCase = True
      objRegExp.Global = True
      objRegExp.Pattern = "((?![a-zA-Z0-9]).)+"
      outputStr = objRegExp.Replace(input, "-")

      objRegExp.Pattern = "\-+"
      outputStr = objRegExp.Replace(outputStr, "-")

      CleanUp = outputStr
    End Function

    MsgBox (CleanUp("Test"))

编辑:我很愚蠢,只是看到了我做的变量混音,导致它什么也没有返回。它现在正在运作。仍会接受性能问题或更好建议的输入。

2 个答案:

答案 0 :(得分:2)

它不知道您的示例的预期结果是什么,但也许您可以尝试使用该模式:

objRegExp.Pattern =“[^ a-zA-Z0-9]”

希望它有效

答案 1 :(得分:2)

您可以进一步简化它。

objRegExp.Pattern =“[^ \ w +]”