具有未知位数的VB模式

时间:2015-09-11 21:41:27

标签: regex vb.net

我是VB的新手,我需要编写一个函数来检查ID是否跟随写模式。

模式应该是字母ORG,伴随着 - 然后是1到无限数字(ORG-1或ORG-15793131354)。 这是我现在的代码:

Sub CheckIdPattern

  If MyFolder.Fields("USERTEXT221").value IsNot Nothing Then

    Dim sId as String = MyFolder.Fields("USERTEXT221").value

    Dim sMatch as Boolean = sId Like("ORG-#*")
    If sMatch = False Then
        Throw new exception("The ID entered is invalid, please use an ID starting with ORG- followed by numbers only")
    End if  

  End if
End sub

正如您所看到的,我目前正在使用" ORG - #*"至少验证字符串的开头,但允许在结尾处有任何其他字符,当我们去读取这些ID时,会在程序后面导致错误。

我也尝试过使用System.Text.RegularExpressions(虽然可能不正确),但它失败了,因为(我认为)我无法在程序中导入它(我只能访问一小部分代码和其余的被软件提供商阻止。

我知道这似乎是一个非常基本的问题,对此感到抱歉,非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用fully qualified name访问Regex.IsMatch方法。然后,这段代码将为您解决问题:

Dim sId as String = "ORG-15793131354"
Dim sMatch as Boolean = System.Text.RegularExpressions.Regex.IsMatch(sId, "^ORG-\d+$")
If sMatch = False Then
    Throw new exception("The ID entered is invalid, please use an ID starting with ORG- followed by numbers only")
End if  

请参阅IDEONE demo

正则表达式 - "^ORG-\d+$" - 在字符串的开头匹配ORG,然后匹配-,然后匹配字符串末尾的一个或多个数字。

答案 1 :(得分:0)

也许您可以使用for循环检查ORG-匹配后的每个字符:

For i = 4 To sid.length
    If Not(sid[i]>'0' And sid[i]<'9') Then
    'throw your exception
    End If
Next