正则表达式匹配验证多个文本框?

Regex Match to validate more than one textbox?

If Not Regex.Match(txt_Username.Text, "^[a-zA-Z0-9]*$", RegexOptions.IgnoreCase).Success Then

如何更改此行以便它检查 txt_Password 以及 txt_Username?

谢谢

您可以通过先创建一个正则表达式对象,然后使用其实例方法来共享正则表达式,如下所示:

Dim checker As Regex = New Regex("^[a-zA-Z0-9]*$", RegexOptions.IgnoreCase)
If Not checker.Match(txt_Username.Text).Success OrElse Not checker.Match(txt_Password.Text).Success

另一种方法是创建一个包含要测试的值的数组,然后使用 Array.TrueForAll()。此示例还确保其中 none 个为空:

    Dim values() As String = {txt_Username.Text, txt_Password.Text}
    If Not Array.TrueForAll(values, Function(x) Regex.IsMatch(x, "^[a-zA-Z0-9]*$", RegexOptions.IgnoreCase)) _
        OrElse Not Array.TrueForAll(values, Function(x) x.Trim.Length > 0) Then

        MessageBox.Show("Invalid UserName and/or Password")

    End If

仅两个文本框有点矫枉过正,但只是在您需要检查一系列文本框时保留在工具箱中的东西。

Regex 可以通过使用它的静态方法来应用,也可以通过创建可重用的 Regex 实例来应用:

Dim validator As New Regex("^[a-zA-Z0-9]*$", RegexOptions.IgnoreCase)
If Not validator.IsMatch(txt_Username.Text) OrElse _
   Not validator.IsMatch(txt_Password.Text) Then
   ...
End If