Jump to content
Hélder

Validar dados com expressões regulares

Recommended Posts

Hélder

Boas, não percebo quase nada de expressões regulares então estive á procura na net uma para validar número de telemóvel portugueses(91x 92x 93x 96x

) e então achei esta:

/^(9[1236]\d{7}$/

No entanto não aceita qualquer tipo de expressão, dá sempre erro.

   Case "Telemovel"
		 'Falta melhorar esta expressão para validar o numero telemovel
		  Dim regex As String = "/^(9[1236]\d{7})$/"
		  Dim validarTelemovel As New Regex(regex)

		  If (validarTelemovel.IsMatch(Contacto)) Then
				fGetIndividuos.SaveContacto(idIndividuo, idTipoContacto, Contacto)
				rdgContacto.Rebind()
				TextBoxContacto.Text = ""
		  Else
				 Me.rajaxMan.ResponseScripts.Add("radalert('Necessário definir um número de telemóvel válido.');")
		  End If

Edited by Hélder

Share this post


Link to post
Share on other sites
Hélder

Obrigado pelo dica, mas como eu tenho estado a validar tudo com regex queria continuar assim...

Cumprimentos,

Hélder

Edited by Hélder

Share this post


Link to post
Share on other sites
rezanov

tenta assim

System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match(TextBox1.Text.ToString().Replace(" ", string.Empty), @"^(9[1236]\d{7}|2\d{8})?$",
System.Text.RegularExpressions.RegexOptions.IgnoreCase);

// Here we check the Match instance.
if (!match.Success)
{
   //Erro
}
else
{
   //Telemovel válido
}

PS: porque aparece RegularExp<b></b>ressions em vez de RegularExpressions, não sei )

Edited by ribeiro55

Share this post


Link to post
Share on other sites
ribeiro55

"Ter estar a validar tudo com regex" não é justificação suficiente para te sentires obrigado a validar tudo com expressões regulares.

Uma validação da treta como essa só tem a perder se usares expressão regular, nomeadamente a nível de performance.

Basta-te algo como um Like:

If (n Like "9[1236]#######" Or n Like "2########") And n.Length = 9 Then
   Console.Write("LIKE:OK  ")
Else
   Console.Write("LIKE:ERRADO  ")
End If

Podes consultar mais informação sobre o Like, aqui: http://wiki.portugal-a-programar.pt/dev_net:vb.net:operadorlike

Ainda assim, se quiseres optar por a expressão regular, só precisas de retirar as slashes de início e fim. De resto a expressão parece-me bem.

Dim regex As String = "^(9[1236]\d{7}|2\d{8})"

Só para reforçar, tomei a liberdade de fazer uma medição de templo simples, e eis o resultado para um número válido (menos ticks = mais rápido):

REGEX:OK TICKS:3532

LIKE :OK TICKS:198

É insignificante se fizeres uma validação. Se fizeres mais, a matemática começa a dar-te uma coça.

Eu acho que as expressões regulares são excelentes, sim para validações com várias regras, mas em alvos muito mais extensos, por exemplo, sacar todos os números Portugueses de 3423 páginas de texto.

Edited by ribeiro55

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
Hélder

Obrigado pelas ajudas!

Realmente ribeiro51 tens toda a razão, vou optar antes pela tua solução.

Case "Telemovel"
 'Dim regex As String = "^(9[1236]\d{7})?$"
 'Dim validarTelemovel As New Regex(regex)
 'If (validarTelemovel.IsMatch(Contacto)) Then
   '  fGetIndividuos.SaveContacto(idIndividuo, idTipoContacto, Contacto)
 'Else
   '  Me.rajaxMan.ResponseScripts.Add("radalert('Necessário definir um número de telemóvel válido.');")
 'End If

 If (Contacto Like "9[1236]#######") And Contacto.Length = 9 Then
   fGetIndividuos.SaveContacto(idIndividuo, idTipoContacto, Contacto)
 Else
   Me.rajaxMan.ResponseScripts.Add("radalert('Necessário definir um número de telemóvel válido.');")
 End If

Cumprimentos,

Hélder

Edited by Hélder

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.