Visual Basic"喜欢"操作员的密码和电子邮件模式

时间:2015-02-12 13:59:12

标签: vb.net visual-studio-2013

我正在尝试使用Like运算符来确保String与Pattern匹配。我知道使用正则表达式(正则表达式)更容易,但我只想说我必须使用“like”运算符。 我该怎么办呢?任何帮助将不胜感激。

密码文本框至少应包含一个字符,一个数字和其中一个符号#%& *。

让我们保持简单,顺便说一句,这就是我设法带来电子邮件模式的程度。

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    If TextBox2.Text Like "*[@]*?.[a-z]*" Then
        MsgBox("OK")
    Else
        MsgBox("NO GOOD")
    End If
End Sub

3 个答案:

答案 0 :(得分:2)

  

密码文本框至少应包含一个字符,一个数字和其中一个符号#%& *。

使用LIKE运算符解决此问题的唯一方法是结合多个LIKE运算,因为没有OR或lookbhead / lookbehind的概念,如正则表达式。

以下是一个例子:

Dim strings = {"das6723&", "das6723", "#das6723", 
               "fsdfdfs", "f74/&g3", "232323", 
               "ABC37&28", "J**1", "j87#"}

For Each s in strings
    Console.Write(s)

    If s Like "*#*" AndAlso _ 
       s Like "*[#%&*]*" AndAlso _
       s Like "*[a-zA-Z]*" Then

       Console.WriteLine(" : valid")
    Else
        Console.WriteLine(" : not valid")
    End If
Next

答案 1 :(得分:1)

  

密码文本框至少应包含一个字符,一个数字   以及其中一个符号#%& *。

根据您的要求,您既不需要正则表达式,也不需要Like - 运算符,这样也更有效率和可读性:

Dim isValid = text.Length > 0 AndAlso
    text.Any(AddressOf Char.IsDigit) AndAlso
    text.Any(AddressOf "#%&".Contains)

答案 2 :(得分:-1)

你应该寻找正则表达式。以下是MSDN中用于在VB中查找电子邮件地址的示例。

Function ValidateEmail(ByVal email As String) As Boolean
    Dim emailRegex As New System.Text.RegularExpressions.Regex( 
        "^(?<user>[^@]+)@(?<host>.+)$")
    Dim emailMatch As System.Text.RegularExpressions.Match = 
       emailRegex.Match(email)
    Return emailMatch.Success
End Function

https://msdn.microsoft.com/en-us/library/vstudio/txk0hsah%28v=vs.100%29.aspx

有关VB中正则表达式的更多信息:http://support2.microsoft.com/kb/818802