1

需要帮助构建一个检查有效计算机名称并仅返回无效字符的 VBScript 正则表达式。字符串只能包含数字、大小写字母和 (-) 符号。它不能以 (-) 开头或结尾,也不能只是数字。

有效(返回不匹配):

电脑
Computer8
8Computer
Com8电脑电脑 Computer
-
123

无效(返回匹配无效字符):


123-
电脑电脑-电脑
*电脑
PC& 123

4

3 回答 3

2

据此: 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。

于 2012-08-11T02:55:27.433 回答
2

我最终切换了有效和无效的回报。我最终还使用了两个不同的 RegEx 字符串。第一个是:

 ^[0-9a-zA-Z]{1,}[-]*[0-9a-zA-Z]{1,}$

这不允许在开头或结尾使用 (-),并且需要所有数字、字母或 (-)。它还需要一个至少包含两个字符的字符串。

第二个是:

"[a-zA-Z]"

这样可以确保至少包含一个字母。

于 2012-08-13T20:05:44.210 回答
1

像这样的东西/^([0-9]|[a-zA-Z]){1,}[a-zA-Z0-9-]+([0-9]|[a-zA-Z]){1,}$/

于 2012-08-11T02:43:09.183 回答