正则表达式在 vb6 中的用法
我需要验证一个字符串,它可能包含字母数字以及特殊字符,因为我必须传递仅包含 Alpha 字符的字符串(不允许数字或任何其他特殊字符)
在当前方法中,我使用 ASCII 数字来评估每个字符是否为 alpha。是否有其他有效的方法来发现字符串中是否存在特殊字符或数字?就像我们不能使用 Like 或其他东西来检查一次而不是一个字符一个字符地检查吗?
For y = 2 To Len(sString)
If Not ((Asc(Mid$((sString,y,1))>64 AND Asc(Mid$((sString,y,1))<91) OR _
(Asc(Mid$((sString,y,1))>96 AND Asc(Mid$((sString,y,1))<123)) Then
//Display an error msg
Exit For
End If
Next y
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(3)
颜漓半夏 2024-12-02 12:50:48
您必须添加对 Microsoft VBScript Regular Expressions 5.5
代码的引用来检查非字母字符:
'Prepare a regular expression object
Dim myRegExp As RegExp
Dim myMatches As MatchCollection
Dim myMatch As Match
Dim matchesFound As Boolean
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = "[^A-Za-z]+"
Set myMatches = myRegExp.Execute("abc123def#$%")
matchesFound = myMatches.Count > 0
查看 "="">如何在 Microsoft Visual Basic 6.0 中使用正则表达式,请访问 Microsoft 支持以获取更多信息。
-黛色若梦 2024-12-02 12:50:47
您可以在 VB6 中使用正则表达式。您必须将对“Microsoft VBScript Regular Expressions 5.5”库的引用添加到您的项目中。然后您可以使用以下内容:
Dim rex As RegExp
Set rex = New RegExp
rex.Pattern = "[^a-zA-Z]"
If rex.Test(s) Then
' Display error message
End If
当我最初回答这个问题时,它被标记为 VB.NET;供将来参考,我原来的基于.Net的答案保留在下面
正如你所想的,这可以使用正则表达式来完成(不要忘记导入System.Text.RegularExpressions
:
If Regex.IsMatch(s, "[^a-zA-Z]") Then
' Display error msg
End If
另外,原始代码读起来像 VB6 代码,而不是 VB.NET 以下是编写原始非正则表达式代码的更易读的方法:
For Each ch As Char In someString
If Not (ch >= "a"c AndAlso ch <= "z"c OrElse ch >= "A"c AndAlso ch <= "Z"c) Then
' Display error msg
Exit For
End If
Next
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
VBA 有一个原生的
Like
运算符:它的语法是非标准的,例如它的多字符通配符是*
而 NOT 运算符是!
:VBA has a native
Like
operator: its syntax is non-standard e.g. its multi-character wildcard is*
and the NOT operator is!
: