我试图通过正则表达式限制用户输入,但遇到非退格和删除等非字符输入时遇到问题。
我最初的想法是评估文本框结果将基于文本和传入字符的内容,然后接受输入或阻止它,如果通过/失败正则表达式。这有效,直到达到非字符输入,然后在正则表达式上失败。
有没有办法在不明确检查每个角色的情况下评估特殊字符?或者,如果有更好的实施方式,我会对它开放(我坚持使用正则表达式进行验证)。
' Regex for double input ^[+-]?([0-9]*[.])?[0-9]*$
Private Sub txtTestInput_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtTestInput.KeyPress
If chkValidateOnInput.Checked Then
Dim part1 As String = txtTestInput.Text.Substring(0, txtTestInput.SelectionStart)
Dim part2 As String = txtTestInput.Text.Substring(txtTestInput.SelectionStart + txtTestInput.SelectionLength)
Dim character As String
character = e.KeyChar.ToString
Dim result As String = part1 + character + part2
If Not Regex.IsMatch(result, txtRegex.Text) Then
e.Handled = True
End If
End If
End Sub