VBScript正则表达式

时间:2012-08-10 23:44:21

标签: regex vbscript

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

有效(返回不匹配):

  

电脑
  电脑8   8电脑
  Com8puter
  计算机
  电脑-121

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

  

123
   - 电脑
  电脑 -
  com * puter
  PC& 123

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分:2)

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

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

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

第二个是:

"[a-zA-Z]"

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

答案 2 :(得分:1)

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