2012-11-19 4 views
0

comment vérifier une valeur particulière commencer par une chaîne ou un chiffre. ici j'ai joint mon code. Je reçois l'erreur d'aimer l'idendificateur attendu.Expression régulière dans vb.net

code 
---- 
Dim i As String 
dim ReturnValue as boolean 
    i = 400087 
    Dim s_str As String = i.Substring(0, 1) 

    Dim regex As Regex = New Regex([(a - z)(A-Z)]) 
    ReturnValue = Regex.IsMatch(s_str, Regex) 




error 

regx is type and cant be used as an expression 
+0

Si Regex n'est pas un must - et il semble un peu exagéré d'utiliser regex ici - vous pouvez simplement utiliser 'si Char.IsLetterOrDigit (TheString (0))' – igrimpe

Répondre

3

Votre variable est regex, Regex est le type de la variable.

Il est:

ReturnValue = Regex.IsMatch(s_str, regex) 

Mais votre regex est également défectueux. [(a - z)(A-Z)] crée une classe de caractères qui correspond exactement aux caractères ()-az, la plage A-Z et un espace et rien d'autre.

Il me semble que vous voulez faire correspondre les lettres. Pour cela il suffit d'utiliser \p{L} qui est une propriété Unicode qui correspondrait à n'importe quel caractère qui est une lettre dans n'importe quelle langue.

Dim regex As Regex = New Regex("[\p{L}\d]") 
+0

Notez la lettre * ou le chiffre au début * dans le Q ... sinon vous l'avez presque. – Richard

+0

@Richard, merci pour l'indice, je l'ai ajouté à ma solution. – stema

2

peut-être vous dire

Dim _regex As Regex = New Regex("[(a-z)(A-Z)]") 
2
Dim regex As Regex = New Regex([(a - z)(A-Z)]) 
ReturnValue = Regex.IsMatch(s_str, Regex) 

noter la différence de cas, utilisez regex.IsMatch. Vous devez également citer la chaîne regex: "[(a - z)(A-Z)]".


Enfin, que regex n'a pas de sens, vous êtes correspondant à une lettre ou une parenthèse d'ouverture/fermeture partout dans la chaîne.

Pour correspondre au début de la chaîne que vous devez inclure l'ancre de départ ^, quelque chose comme: ^[a-zA-Z] correspond à tout lettre ASCII au début de la chaîne.

2

Vérifiez si une chaîne commence par une lettre ou chiffres:

ReturnValue = Regex.IsMatch(s_str,"^[a-zA-Z0-9]+") 

Regex Explication:

^   # Matches start of string 
[a-zA-Z0-9] # Followed by any letter or number 
+   # at least one letter of number 

Voir en action here.