我有一个非常简单的正则表达式包含在子程序中:
Private Sub txtSubject_Leave() Handles txtSubject.Leave
Dim pattern As String = "^[A-Z0-9]*"
If Not Regex.IsMatch(txtSubject.Text, pattern) Then
MsgBox("Invalid Subject")
txtSubject.Focus()
End If
End Sub
我确定它会变得简单,但我尝试的每一个字符串都是错误的,不会返回错误信息,我做错了什么?
答案 0 :(得分:0)
^[A-Z0-9]*
在您要匹配的字符串的开头匹配0个或更多字母数字字符。 0
部分在这里很重要,因为如果字符串的第一个字符是空格,则0将“匹配”并通过测试。如果要确保第一个字符是字母数字,请使用另一个量词,例如+
:
^[A-Z0-9]+
如果要确保字符串仅包含字母数字字符,请同时使用行尾锚点:
^[A-Z0-9]+$
在这种特殊情况下,如果您还想允许空字符串,则可以使用*
:
^[A-Z0-9]*$
这个也不允许使用非字母数字字符。