vb.net应用程序正则表达式错误

时间:2015-02-16 10:21:36

标签: regex vb.net

我正在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中检查它吗?那么,这里的问题是什么?

2 个答案:

答案 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