需要帮助构建一个检查有效计算机名称并仅返回无效字符的 VBScript 正则表达式。字符串只能包含数字、大小写字母和 (-) 符号。它不能以 (-) 开头或结尾,也不能只是数字。
有效(返回不匹配):
电脑
Computer8
8Computer
Com8电脑电脑 Computer
-
123
无效(返回匹配无效字符):
123-
电脑电脑-电脑
*电脑
PC& 123
据此: http: //msdn.microsoft.com/en-us/library/ms974570.aspx VBScript 有自己的正则表达式语法风格。请注意,NetBIOS 计算机名称的长度限制为 15。
那么应该是 "^\w[\w-]{0,14}$"
RegEx 满足除“是所有数字”之外的所有要求。这可以通过运行第二个正则表达式“^\d+$”来完成。
在代码中:
Dim regexValid, regexNumber
Set regexValid = New RegExp
Set regexNumber = New RegExp
regexValid.Global = True
regexValid.IgnoreCase = True
regexNumber.Global = True
regexNumber.IgnoreCase = True
regexValid.Pattern = "^\w[\w\-]{0,14}$"
regexNumber.Pattern = "^\d+$"
Dim inputString
inputString = InputBox("Computer name?")
If regexValid.Test( inputString ) And Not regexNumber.Test( inputString ) Then
' It's a valid computer name string
Else
' It's invalid
End If
嗯,这是我今年写的第一个 VBScript。
我最终切换了有效和无效的回报。我最终还使用了两个不同的 RegEx 字符串。第一个是:
^[0-9a-zA-Z]{1,}[-]*[0-9a-zA-Z]{1,}$
这不允许在开头或结尾使用 (-),并且需要所有数字、字母或 (-)。它还需要一个至少包含两个字符的字符串。
第二个是:
"[a-zA-Z]"
这样可以确保至少包含一个字母。
像这样的东西/^([0-9]|[a-zA-Z]){1,}[a-zA-Z0-9-]+([0-9]|[a-zA-Z]){1,}$/