我是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(虽然可能不正确),但它失败了,因为(我认为)我无法在程序中导入它(我只能访问一小部分代码和其余的被软件提供商阻止。
我知道这似乎是一个非常基本的问题,对此感到抱歉,非常感谢您的帮助!
答案 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