我想检查一个字符串是否只包含大写字母和数字。我试图用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
。
答案 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
而排除),数字和下划线。 +
通过要求至少一个单词字符来排除空字符串。