solo regulares regular punto numeros letras expresiones expresion espacios espacio ejemplos consecutivos blanco alfanumerico c# regex .net-2.0

c# - regulares - Regex para números solamente



expresion regular solo numeros y punto decimal (17)

No he usado expresiones regulares en absoluto, por lo que estoy teniendo dificultades para solucionar problemas. Quiero que la expresión regular coincida solo cuando la cadena contenida sea todos los números; pero con los dos ejemplos a continuación coincide con una cadena que contiene todos los números más un signo igual como "1234 = 4321". Estoy seguro de que hay una manera de cambiar este comportamiento, pero como dije, nunca he hecho mucho con las expresiones regulares.

string compare = "1234=4321"; Regex regex = new Regex(@"[/d]"); if (regex.IsMatch(compare)) { //true } regex = new Regex("[0-9]"); if (regex.IsMatch(compare)) { //true }

En caso de que importe, estoy usando C # y .NET2.0.


Aquí está mi trabajo:

^(-?[1-9]+//d*([.]//d+)?)$|^(-?0[.]//d*[1-9]+)$|^0$

Y algunas pruebas

Pruebas positivas:

string []goodNumbers={"3","-3","0","0.0","1.0","0.1","0.0001","-555","94549870965"};

Pruebas negativas:

string []badNums={"a",""," ","-","001","-00.2","000.5",".3","3."," -1","--1","-.1","-0"};

Comprobado no solo para C #, sino también con Java, Javascript y PHP


Creo que este es el más simple y acepta la forma de escribir números en Europa y EE. UU., Por ejemplo, EE. UU. 10.555,12, 10.555,12 en Europa. Además, esta no permite varias comas o puntos uno tras otro, por ejemplo, 10..22 o 10, .22 Además de estos números como .55 o, pasarían 55. Esto puede ser útil.

^([,|.]?[0-9])+$


Es coincidente porque encuentra "una coincidencia" no una coincidencia de la cadena completa. Puedes arreglar esto cambiando tu expresión regular para buscar específicamente el principio y el final de la cadena.

^/d+$


Esto funciona con números enteros y decimales. No coincide si el número tiene el separador coma mil,

"^-?//d*(//.//d+)?$"

Algunas cuerdas que coinciden con esto:

894 923.21 76876876 .32 -894 -923.21 -76876876 -.32

algunas cuerdas que no lo hacen:

hello 9bye hello9bye 888,323 5,434.3 -8,336.09 87078.


Lo siento por el formato feo. Para cualquier número de dígitos:

[0-9]*

Para uno o más dígitos:

[0-9]+


Otra forma: si te gusta hacer coincidir números internacionales como persa o árabe, puedes usar la siguiente expresión:

Regex = new Regex(@"^[/p{N}]+$");

Para igualar el uso del carácter del período literal:

Regex = new Regex(@"^[/p{N}/.]+$");


Quizás mi método te ayude.

public static bool IsNumber(string s) { return s.All(char.IsDigit); }


Regex para números enteros y puntos de flotación:

^[+-]?/d*/./d+$|^[+-]?/d+(/./d*)?$

Un número puede comenzar con un punto (sin los dígitos iniciales) y un número puede terminar con un punto (sin los dígitos finales). Por encima de regex reconoceremos ambos como números correctos. A . (punto) en sí sin ningún dígito no es un número correcto. Es por eso que necesitamos dos partes de expresiones regulares allí (separadas con una "|").

Espero que esto ayude.


Regex regex = new Regex ("^ [0-9] {1,4} = [0-9] {1,4] $")


Si bien ninguna de las soluciones anteriores fue adecuada para mi propósito, esto funcionó para mí.

var pattern = @"^(-?[1-9]+/d*([.]/d+)?)$|^(-?0[.]/d*[1-9]+)$|^0$|^0.0$"; return Regex.Match(value, pattern, RegexOptions.IgnoreCase).Success;

Ejemplo de valores válidos: "3", "-3", "0", "0.0", "1.0", "0.7", "690.7", "0.0001", "-555", "945465464654"

Ejemplo de valores no válidos: "a", "", "", ".", "-", "001", "00.2", "000.5", ".3", "3.", "-1" , "--1", "-.1", "-0", "00099", "099"


Si desea extraer solo números de una cadena, el patrón "/ d +" debería ayudar.


Si necesita verificar si todos los dígitos son números (0-9) o no,

^[0-9]+$

1425 VERDADERO

0142 VERDADERO

0 VERDADERO

1 VERDADERO

154a25 FALSO

1234 = 3254 FALSO


Si necesitas tolerar decimales y mil marcadores.

var regex = new Regex(@"^-?[0-9][0-9,/.]+$");

Necesitará un "-", si el número puede ser negativo.


Su expresión regular coincidirá con cualquier cosa que contenga un número, desea usar anclas para hacer coincidir toda la cadena y luego hacer coincidir uno o más números:

regex = new Regex("^[0-9]+$");

El ^ anclará el comienzo de la cadena, el $ anclará el final de la cadena y el + coincidirá con uno o más de lo que la precede (un número en este caso).


Usa los anclajes de principio y fin.

Regex regex = new Regex(@"^/d$");

Use "^/d+$" si necesita hacer coincidir más de un dígito.

Tenga en cuenta que "/d" coincidirá con [0-9] y otros caracteres de dígitos como los números árabes orientales ٠١٢٣٤٥٦٧٨٩ . Use "^[0-9]+$" para restringir las coincidencias solo a los números arábigos del 0 al 9.

Si necesita incluir representaciones numéricas que no sean solo dígitos (como valores decimales para principiantes), consulte la guía completa de tchrist para analizar números con expresiones regulares .


Utilizar anclajes de inicio y final.

Regex regex = new Regex(@"^/d$"); Use "^/d+$" if you need to match more than one digit.


^ / d + $, que es "comienzo de cadena", "1 o más dígitos", "final de cadena" en inglés.