我需要验证一个字符串,该字符串可能包含字母数字以及特殊字符,因为我必须传递仅包含字母字符的字符串(不允许使用数字或任何其他特殊字符)
在当前的方法中,我使用 ASCII 数字来评估每个字符是否为字母。是否有其他有效的方法来发现字符串中是否存在特殊字符或数字?就像我们不能使用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
您可以在 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的答案保留在下面
正如您所想,这可以使用正则表达式来完成(不要忘记Imports 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)