检查字符串是否为大写和数字

时间:2015-08-03 14:37:06

标签: regex vbscript

我想检查一个字符串是否只包含大写字母和数字。我试图用RegExp来解决这个问题,到目前为止我已经解决了这个问题:

Function CheckForInvalidChars()
    dim b
    Set re = New RegExp
    re.Pattern = "[A-Z_0-9]"    
    b = re.Test("eS")
    msgbox b
End Function

然而变量" b"返回true,因为我猜它在" S"中找到匹配虽然我希望该特定字符串返回false,因为并非所有字母都是大写的。我将如何实现这一目标?

我尝试使用IsNumeric功能执行此功能,但无法找到IsUpperCase

4 个答案:

答案 0 :(得分:4)

一般来说,如果你想使用正则表达式匹配整个字符串,通常会使用^$来描述字符串的开头和结尾。< / p>

此外,只有[A-Z_0-9]匹配单个字符。

假设您不允许使用空格,^[A-Z_0-9]*$将是您正在寻找的正则表达式。

答案 1 :(得分:3)

如果UCase(s) <> s,则字符串s中至少有一个小写字母。

答案 2 :(得分:1)

@Andris是对的,正确表达正则表达式如下:

Function CheckForInvalidChars()
    dim b
    Set re = New RegExp
    re.Pattern = "^[A-Z_0-9]*$"
    b = re.Test("eS")
    msgbox b
End Function

答案 3 :(得分:1)

如果您想强制使用大写字母,我建议只使用UCase字符串。然后你可以简化检查:

Function CheckForInvalidChars(s)
  Set re = New RegExp
  re.Pattern = "^\w+$"
  CheckForInvalidChars = re.Test(s)
End Function

teststring = InputBox("Input something")
teststring = UCase(teststring)

WScript.Echo "" & CheckForInvalidChars(teststring)

转义序列\w匹配单词字符,即大写字母,小写字母(由于先前的UCase而排除),数字和下划线。 +通过要求至少一个单词字符来排除空字符串。