EXPRESSAO REGULAR NUMEROS E UMA VIRGULA
Ola pessoal
estou a horas tentando montar uma expressao regular, no qual extraia os números e apenas UMA virgula
eu fiz assim:
assim o valor fica apenas com números e virgulas..
porém, não esta limitando 01 virgula.. se tiver 2 ou mais virgulas ele não tira.
o que falta nessa expressao para que isso:
string campo = [Ô]1,,,99[Ô] fique apenas campo = [Ô]1,99[Ô]?
estou a horas tentando montar uma expressao regular, no qual extraia os números e apenas UMA virgula
eu fiz assim:
campo = Regex.Replace(campo, @[Ô][^\d\[,]{1}\d][Ô], [Ô][Ô]);
assim o valor fica apenas com números e virgulas..
porém, não esta limitando 01 virgula.. se tiver 2 ou mais virgulas ele não tira.
o que falta nessa expressao para que isso:
string campo = [Ô]1,,,99[Ô] fique apenas campo = [Ô]1,99[Ô]?
Fico contente de ver que você está se aventurando à s novidades e melhorando sua codificação, de verdade! Expressões regulares podem ficar bastante complexas dependendo das funcionalidade que você quer nelas. No seu caso, é muito mais simples limitar a entrada de dados, ou seja, permitir apenas uma vÃrgula ao digitar.
sim, eu sei..
mas queria realmente fazer isso em expressão regular
só falta realmente saber como liberar apenas uma virgula...e as outras tirar
mas queria realmente fazer isso em expressão regular
só falta realmente saber como liberar apenas uma virgula...e as outras tirar
Bem, ok, nesse caso, você terá que usar uma feature chamada [Ô]Negative look ahead[Ô], ficando assim:
Como eu disse, expressões regulares são bem complexas e à s vezes bastante confusas, um bom lugar para entender bem é aqui
Regex.Replace(campo, @[Ô]\s*,\s*(?!\d)[Ô], [Ô][Ô]);
Como eu disse, expressões regulares são bem complexas e à s vezes bastante confusas, um bom lugar para entender bem é aqui
nao funcionou Kerplunk
esta aceitando letras normalmente.. e ainda aceita virgula seguido de qualquer numero
veja em anexo um exemplo. no exemplo ele reconheceu apenas 1 virgula
o que gostaria era de deixar apenas os numero e a primeira virgula. nada mais
esta aceitando letras normalmente.. e ainda aceita virgula seguido de qualquer numero
veja em anexo um exemplo. no exemplo ele reconheceu apenas 1 virgula
o que gostaria era de deixar apenas os numero e a primeira virgula. nada mais
juro que estou tentando aqui.. mas ta dificil
Eu disse antes para usar o replace porque tinha certeza que seria muito mais do que você estava querendo...
bom, resolvi filtrar por numeros e virgula... e deixei o try catch.
no caso, se ele colocar duas virgula.. o campo apenas ficará 0,00
no caso, se ele colocar duas virgula.. o campo apenas ficará 0,00
// Formata qualquer string em Moeda
// Exemplo de uso: txtValor.Text = txtValor.Text.MaskMoeda();
public static string MaskMoeda(this string valor)
{
try
{
// Retira tudo que nao for numero e virgula. converte em double e formata em 0:C2
return string.Format([Ô]{0:C2}[Ô], Convert.ToDouble(Regex.Replace(valor, @[Ô][^\d,][Ô], [Ô][Ô])));
}
catch (Exception)
{
return [Ô]0,00[Ô];
}
}
Tópico encerrado , respostas não são mais permitidas