Regex apenas para números
string compare = "1234=4321";
Regex regex = new Regex(@"[\d]");
if (regex.IsMatch(compare))
{
//true
}
regex = new Regex("[0-9]");
if (regex.IsMatch(compare))
{
//true
}
no caso de ser importante, estou a usar C# e. NET2. 0.
17 answers
Usa as âncoras de início e fim.
Regex regex = new Regex(@"^\d$");
Utilize "^\d+$"
Se precisar de corresponder a mais de um dígito.
Note que "\d"
irá corresponder a [0-9]
e a outros caracteres como os algarismos árabes Orientais ٠١٢٣٤٥٦٧٨٩
. Use "^[0-9]+$"
para restringir as correspondências apenas aos algarismos árabes 0-9.
Se precisar de incluir quaisquer representações numéricas que não sejam apenas algarismos( como os valores decimais para começar), então veja @tchrist ' S guia completo para analisar números com expressões regulares .
A sua expressão regular irá corresponder a qualquer coisa que contenha um número, deseja usar âncoras para corresponder a toda a cadeia de caracteres e depois corresponder a um ou mais números:
regex = new Regex("^[0-9]+$");
O ^
irá ancorar o início da cadeia, o $
irá ancorar o fim da cadeia, e o +
irá corresponder a um ou mais do que o precede (um número neste caso).
Se for necessário tolerar pontos decimais e Mil marcadores
var regex = new Regex(@"^-?[0-9][0-9,\.]+$");
Você vai precisar de um" -", se o número pode dar negativo.
Corresponde porque está a encontrar "uma correspondência" Não uma correspondência da cadeia completa. Você pode corrigir isso alterando o seu regexp para procurar especificamente o início e o fim da string.
^\d+$
public static bool IsNumber(string s)
{
return s.All(char.IsDigit);
}
"^-?\\d*(\\.\\d+)?$"
Algumas cordas que combinam com isto:
894
923.21
76876876
.32
-894
-923.21
-76876876
-.32
Algumas cordas que não ...
hello
9bye
hello9bye
888,323
5,434.3
-8,336.09
87078.
^\D+$, que é "start of string", "1 or more digits", "end of string" em inglês.
^(-?[1-9]+\\d*([.]\\d+)?)$|^(-?0[.]\\d*[1-9]+)$|^0$
E alguns testes
Resultados positivos:
string []goodNumbers={"3","-3","0","0.0","1.0","0.1","0.0001","-555","94549870965"};
Testes negativos:
string []badNums={"a",""," ","-","001","-00.2","000.5",".3","3."," -1","--1","-.1","-0"};
Verificado não só para C#, mas também com Java, Javascript e PHP
[0-9]*
Para um ou mais algarismos:
[0-9]+
Se precisar de verificar se todos os algarismos São número (0-9) ou não,
^[0-9]+$
1425 verdadeiro
0142 TRUE
0 verdadeiro
1 verdadeiro
154a25 FALSE
1234=3254 FALSE
De outra forma: se gosta de corresponder números internacionais como o persa ou o árabe, por isso pode usar a seguinte expressão:
Regex = new Regex(@"^[\p{N}]+$");
Para corresponder à utilização literal do carácter do período:
Regex = new Regex(@"^[\p{N}\.]+$");
Usar âncoras de início e fim.
Regex regex = new Regex(@"^\d$");
Use "^\d+$" if you need to match more than one digit.
var pattern = @"^(-?[1-9]+\d*([.]\d+)?)$|^(-?0[.]\d*[1-9]+)$|^0$|^0.0$";
return Regex.Match(value, pattern, RegexOptions.IgnoreCase).Success;
Exemplo de valores válidos: "3", "-3", "0", "0.0", "1.0", "0.7", "690.7", "0.0001", "-555", "945465464654"
Exemplo de valores não válidos: "a", "", " ", ".", "-", "001", "00.2", "000.5", ".3", "3.", " -1", "--1", "-.1", "-0", "00099", "099"
^([,|.]?[0-9])+$
Regex para números inteiros e pontos flutuantes:
^[+-]?\d*\.\d+$|^[+-]?\d+(\.\d*)?$
Um número pode começar por um período (sem algarismos iniciais), e um número pode terminar com um período (sem carateres). Acima da regex reconhecerá ambos como números corretos. A. (período) Ele mesmo sem quaisquer dígitos não é um número correto. É por isso que precisamos de duas partes regexas (separadas com um "|").
Espero que isto ajude.Se quiser extrair apenas números de uma cadeia de caracteres, o padrão "\d+" deverá ajudar.
Regex regex = novo Regex ("^[0-9]{1,4}=[0-9]{1,4]$")