如果收到“ffff”,它会立即解析为true并显示消息框。我正在读这个的方式是“如果文本,从索引开始(在代码中较早初始化为零)并且距离为1(意味着它只评估这个单个字母)不是AZ或az,那么显示此消息框。否则,退出此if语句“
为什么不是实际发生的事情?
If (txtPartNum.Text.Substring(index, 1) IsNot "[A-Z]" OrElse txtPartNum.Text.Substring(index, 1) IsNot "[a-z]") Then
MessageBox.Show("Error: Part number must contain two numbers followed by two letters. first")
blnValid = False
End If
编辑:我尝试过切换到这个,我也没有运气,
If (txtPartNum.Text.Substring(index, 1) Like "[!A-Z]" OrElse txtPartNum.Text.Substring(index, 1) Like "[!a-z]") Then
MessageBox.Show("Error: Part number must contain two numbers followed by two letters. first")
blnValid = False
End If
编辑2:我创建了一个字符串来保存txtPartNum.Text.Substring(index,1),并验证它是否正在接收文本框中的第一个字母。我也尝试删除“!”在角色模式中,这对于它是否解决是否真实没有影响 - 每次都是真实的。
答案 0 :(得分:3)
由于您有一个输入必须符合的简单模式,您可以使用正则表达式。
^
[0-9]
表示该行的开头。 {2}
表示范围内的字符" 0"至" 9"。 [0-9]
恰好表示前一项中的两项 - 在本例中为[A-Za-z]
。 {{1}}表示这些范围内的字符。没有什么可以告诉正则表达式必须在那里完成,所以允许在两位数字和两个字母之后的任何字符。
答案 1 :(得分:1)
不完全确定您要检查的规则。看起来您正在尝试验证部件号是否以两个数字后跟两个字符开头。这是一个示例,但显然会根据您要强制执行的规则进行更改。
If txtPartNum.Text LIKE "##??" = False Then
MessageBox.Show("Error: Part number must contain two numbers followed by two letters.")
blnValid = False
End If
如果部件号超过4,请检查"##??*"