Хорошие, вы будете видеть у меня есть следующая проблема: У меня хочет быть линия, в которую я ввожу имя, сформированное только буквами, без чисел и специальных символов.
Следующий класс - класс доказательства, чтобы подтверждать, что я санкционирую поля правильно перед тем, как использовать этот код в главной программе.
Это мой код:
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 то, что происходит со мной:
Мой вопрос: как я могу делать для того, чтобы эти последние две точки не произошли, так как я одинокий хочу буквы?
Ты recomendarГ, - в который вместо explicitar то, что не может быть введенным в компьютер, ты сконцентрировался, в котором sГ-. Из-за того, что дает тебе пример, если бы написал Pa~blo или Pa^blo, ты cГіdigo fallarГ - в, хотя тебе удастся исправить проблему.
то, что podrГ-схвати делать, состоит в том, чтобы санкционировать, что неудар в лунку были одиноким буквы этой формы:
Regex.IsMatch(input, @"^[a-zA-Z]+$");
Попытайся видеть так:
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]" 'Одинокий числа'
Ты можешь делать следующее:
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, и в случае, если любая из этих двух статей будет верными говорить, что он не совпадает.