Препятствовать введению специальных символов в VisualBasic.NET

Хорошие, вы будете видеть у меня есть следующая проблема: У меня хочет быть линия, в которую я ввожу имя, сформированное только буквами, без чисел и специальных символов.

Следующий класс - класс доказательства, чтобы подтверждать, что я санкционирую поля правильно перед тем, как использовать этот код в главной программе.

Это мой код:

Imports System.Text.RegularExpressions

Module Module1

Sub Main()

    Dim linea As String = " "

    'Definimos expresiones regulares para controlar los input en las textbox(todos prohiben también caracteres especiales):
    Dim patronLetras As String = "[A-Za-z]"   'Solo letras
    Dim patronNum As String = "[1-9]"  'Solo números
    Dim patronMixto As String = "[A-Za-z1-9]"  'Ambos
    Dim caractEspecial = "ºª\!|@#·$%&/()=?¿¡,;.:-_<>[]{}*+"

    While (linea <> "fin")
        linea = Console.ReadLine()

        Dim rgx As New Regex(patronLetras)
        Dim matchTlf As Match = rgx.Match(linea)
        If (matchTlf.Success = False Or linea.Contains(caractEspecial) = True) Then
            Console.WriteLine("No coincide")
        Else
            Console.WriteLine("Coincide")
        End If
    End While

End Sub

End Module

Блок IF был бы должен говорить, что совпадают те Strings, которые являются только буквами. В этом моменте я использую выражение patronLetras, чтобы санкционировать только прописные и мелкие буквы ее в в нее z, y то, что происходит со мной:

  • Если я ввожу буквы ("adfadsfvvrevHAGSDCVV"), СОВПАДИ.
  • если я ввожу специальный символ или номер (181), он не совпадает.
  • если я ввожу буквы и специальные символы (asdfTYER. - $), СОВПАДИ.
  • если я ввожу буквы и числа (hgvsdGASVD5352456), СОВПАДИ.

Мой вопрос: как я могу делать для того, чтобы эти последние две точки не произошли, так как я одинокий хочу буквы?

3
задан 24.11.2016, 13:36
3 ответа

Ты recomendarГ, - в который вместо explicitar то, что не может быть введенным в компьютер, ты сконцентрировался, в котором sГ-. Из-за того, что дает тебе пример, если бы написал Pa~blo или Pa^blo, ты cГіdigo fallarГ - в, хотя тебе удастся исправить проблему.

то, что podrГ-схвати делать, состоит в том, чтобы санкционировать, что неудар в лунку были одиноким буквы этой формы:

Regex.IsMatch(input, @"^[a-zA-Z]+$");
3
ответ дан 24.11.2019, 12:26
  • 1
    Функционируй! Большое спасибо, он был таким замурованным пробуя доставать вещи отсюда следует, что я это ни подумал таким образом. – Alvaro Tauroni 24.11.2016, 13:40
  • 2
    Он обычно происходит с нами и всегда вторая точка зрения помогает. – Pablo Claus 24.11.2016, 13:43

Попытайся видеть так:

Dim patronNum As New Regex("[0-9]")
Dim caractEspecial As New Regex("[^a-zA-Z0-9]")

If patronNum.Matches(linea).Count > 0 Then
        Console.WriteLine("No coincide")
        Return False
    End If

    If caractEspecial.Matches(linea).Count > 0 Then
        Console.WriteLine("No coincide")
        Return False
    End If

То, что ты делаешь, состоит в том, что ты считаешь специальные числа / символы linea и если есть более 0, ты говоришь, что "он не совпадает". Return False я это поместил, если ты находишься в каком-то цикле или что-то, но для твоего примера кода тебе не было бы надо вначале.
Он простой, я надеюсь, что он подает тебя. И подтверди твой код, потому что эти смотря только возможность 1 al 9 препятствуя 0.

Dim patronNum As Стринг =" [1-9]" 'Одинокий числа'

2
ответ дан 24.11.2019, 12:26
  • 1
    Пойдите! Верный большое спасибо, ни я habí в отчитанный в этом 0. – Alvaro Tauroni 24.11.2016, 13:38

Ты можешь делать следующее:

Imports System.Text.RegularExpressions

Module Module1

Sub Main()

    Dim linea As String = " "

    'Definimos expresiones regulares para controlar los input en las textbox(todos prohiben también caracteres especiales):
    Dim patronNum As String = "[0-9]"  'Solo números
    Dim patronCharEspeciales As String = "[^\w]"  'Caracteres Especiales

    While (linea <> "fin")
        linea = Console.ReadLine()

        Dim rgx As New Regex(patronNum)
        Dim matchTlf As Match = rgx.Match(linea)
        Dim rgx2 As New Regex(patronCharEspeciales)
        Dim matchTlf2 As Match = rgx2.Match(linea)

        If (matchTlf.Success = True Or matchTlf2.Success = True) Then
            Console.WriteLine("No coincide")
        Else
            Console.WriteLine("Coincide")
        End If
    End While

End Sub

End Module

я не эксперт по регулярным выражениям, asГ - который быть конечно, что ты можешь писать это с одной expresiГіn регулировать вместо 2.

то, что мы делаем, сначала подтверждать, имеет ли он nГєmeros в Вашей структуре, и потом подтверждать а сформировано символами alphanumГ©ricos, и в случае, если любая из этих двух статей будет верными говорить, что он не совпадает.

0
ответ дан 24.11.2019, 12:26

Теги

Похожие вопросы