¿Cómo puedo validar una cadena usando expresiones regulares para permitir solo caracteres alfanuméricos en ella?
(Tampoco quiero permitir espacios).
Utilice la siguiente expresión:
^[a-zA-Z0-9]*$
es decir:
using System.Text.RegularExpressions;
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(SomeString)) {
...
}
En .NET 4.0 puede usar LINQ:
yourText.All
dejará de ejecutarse y devolveráfalse
loschar.IsLetterOrDigit
informes por primera vezfalse
ya que el contrato deAll
no se puede cumplir en ese momento.¡Nota! esta respuesta no comprueba estrictamente los caracteres alfanuméricos (que normalmente son AZ, az y 0-9). Esta respuesta permite personajes locales como
åäö
.Actualización 2018-01-29
La sintaxis anterior solo funciona cuando usa un solo método que tiene un solo argumento del tipo correcto (en este caso
char
).Para usar múltiples condiciones, debe escribir así:
fuente
char.IsLetterOrDigit('ก')
volverátrue
. csharppad.com/gist/f96a6062f9f8f4e974f222ce313df8caPuede hacerlo fácilmente con una función de extensión en lugar de una expresión regular ...
Por comentario :) ...
fuente
char.IsLetterOrDigit
en su lugar IsLetter + IsNumberSi bien creo que la solución basada en expresiones regulares es probablemente la forma en que iría, estaría tentado a encapsular esto en un tipo.
Ahora, cuando necesite una cadena validada, puede hacer que la firma del método requiera una AlphaNumericString, y saber que si obtiene una, es válida (aparte de los nulos). Si alguien intenta pasar una cadena no validada, generará un error del compilador.
Puede ser más elegante e implementar todos los operadores de igualdad, o una conversión explícita a AlphaNumericString desde una cadena simple, si le importa.
fuente
static public implicit operator string
parteNecesitaba buscar AZ, az, 0-9; sin una expresión regular (aunque el OP solicita una expresión regular).
Combinando varias respuestas y comentarios aquí, y la discusión de https://stackoverflow.com/a/9975693/292060 , esto prueba la letra o el dígito, evitando letras de otros idiomas y evitando otros números como caracteres de fracción.
fuente
^\w+$
permitiráa-zA-Z0-9_
Utilizar
^[a-zA-Z0-9]+$
para no permitir el subrayado.Tenga en cuenta que ambos requieren que la cadena no esté vacía. Usar en
*
lugar de+
permite cadenas vacías.fuente
^[\w-]+$
Para verificar si la cadena es una combinación de letras y dígitos, puede reescribir la respuesta de @jgauffin de la siguiente manera usando .NET 4.0 y LINQ:
fuente
Misma respuesta que aquí .
Si desea una
A-z 0-9
verificación ASCII que no sea de expresiones regulares , no puede usarla,char.IsLetterOrDigit()
ya que incluye otros caracteres Unicode.Lo que puede hacer es verificar los rangos de códigos de caracteres.
Lo siguiente es un poco más detallado, pero es para facilitar la comprensión más que para el código de golf.
fuente
Según la respuesta de cletus, puede crear una nueva extensión.
fuente
Aconsejo no depender del código prefabricado e integrado en .NET framework, intente traer una nueva solución ... esto es lo que hago ...
fuente
char.IsNumber()
método ya que es un código preconstruido?