我正在vb.net中创建一个应用程序,几乎是第一次发布,但在测试时我发现了一个表达式错误。我已经在代码中正确设置了所有内容,所以这不应该是一个问题,我也导入了它,但我仍然得到相同的错误。这是我的代码区域有错误。我的代码的所有其他信息都不需要。
我的进口商品:
Imports MySql.Data.MySqlClient
Imports System.Text.RegularExpressions
错误所在的代码。记住错误是正则表达式:
Private Sub ButtonNUS_Click(sender As Object, e As EventArgs) Handles ButtonNUS.Click
If TextBoxNUsern.Text = "" Or TextBoxNEmail.Text = "" Or TextBoxNPass.Text = "" Or TextBoxNPhone.Text = "" Then
MessageBox.Show("Please don't leave empty areas.")
ElseIf System.Text.RegularExpressions.Regex.IsMatch(TextBoxNUsern.Text, "^[A-Za-z0-9]+$") Then
MessageBox.Show("Empty spaces or special char is not allowed in username.")
ElseIf System.Text.RegularExpressions.Regex.IsMatch(TextBoxNPass.Text, TextBoxNRPass.Text, "^[A-Za-z0-9.]+$") Then
MessageBox.Show("Empty spaces is not allowed in password.")
ElseIf System.Text.RegularExpressions.Regex.IsMatch(TextBoxNEmail.Text, "\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*") Then
MessageBox.Show("Email must be valid.")
ElseIf System.Text.RegularExpressions.Regex.IsMatch(TextBoxNPhone.Text, "^\+[0-9()-+]+$") Then
MessageBox.Show("Phone number must be valid.")
ElseIf System.Text.RegularExpressions.Regex.IsMatch(TextBoxNCity.Text, "^[A-Za-z ]+$") Then
MessageBox.Show("City must be valid. OPTIONAL")
ElseIf TextBoxNPass.Text <> TextBoxNRPass.Text Then
MessageBox.Show("Password dosen't match. Please try again.")
Else
错误消息是:
发生了类型为“System.InvalidCastException”的未处理异常 在Microsoft.VisualBasic.dll
中附加信息:从字符串“^ [A-Za-z0-9。] + $”转换为 类型'整数'无效。
它表示一个整数。我认为但它的设置为字符串我确定可以说这一行
System.Text.RegularExpressions.Regex.IsMatch(TextBoxNUsern.Text, "^[A-Za-z0-9]+$")
它是一个字符串,因为我正在textboxnusern.text中检查它吗?那么,这里的问题是什么?
答案 0 :(得分:4)
看看你的代码:
System.Text.RegularExpressions.Regex.IsMatch(TextBoxNPass.Text, TextBoxNRPass.Text, "^[A-Za-z0-9.]+$")
现在看一下MSDN IsMatch
声明。
Public Shared Function IsMatch ( _
input As String, _
pattern As String, _
options As RegexOptions _
) As Boolean
您正在尝试将字符串模式转换为RegexOptions,这是一个按位枚举。
校正:
System.Text.RegularExpressions.Regex.IsMatch(TextBoxNRPass.Text, "^[A-Za-z0-9.]+$")
答案 1 :(得分:3)
您正在使用false参数调用IsMatch方法
...
ElseIf System.Text.RegularExpressions.Regex.IsMatch(TextBoxNPass.Text, TextBoxNRPass.Text, "^[A-Za-z0-9.]+$")
...
但是这需要以下参数(from MSDN)
Public Shared Function IsMatch ( _
input As String, _
pattern As String, _
options As RegexOptions _
) As Boolean