我试图验证字符串是否包含a-z或A-Z中的至少一个字符。我已经编写了这段代码来尝试验证,但是如果" dog"进入" strpassword"它仍然返回false。我是视觉基础的新手,确信我错过了一些愚蠢的东西。
If strpassword Like "[*a-z]" Then
lbloutput.Text = strpassword
bolpasswordchk = True
Else
MessageBox.Show("Password must contain a letter", "Input error")
End If
答案 0 :(得分:1)
在通道外移动通配符有助于:
"*[a-z]"
但是,如果密码以小写字母结尾,则只返回True。
要匹配"至少1个字符a - Z",您需要:
"*[a-zA-Z]*"
这意味着从零个或多个字符(*
)开始,后跟英文字母([a-zA-Z]
),并以零个或多个其他字符(*
)结尾。
答案 1 :(得分:0)
解决问题的简单方法是:
If strpassword.Any(Function(c) Char.IsLetter(c)) Then
lbloutput.Text = strpassword
bolpasswordchk = True
Else
MessageBox.Show("Password must contain a letter", "Input error")
End If
有了这个你只检查你的假设:"至少一个字符"。 此解决方案不使用仅VB运算符LIKE,让您专注于.net学习。
如果您使用我的解决方案,请记得检查空字符串或空字符串。
@nunzabar答案更适合于"来自a-z或A-Z"问题,但通过我的解决方案,您可以接受非ascii个字母。