Como posso validar uma string usando Expressões regulares para permitir apenas caracteres alfanuméricos nela?
(Também não quero permitir espaços).
Use a seguinte expressão:
^[a-zA-Z0-9]*$
ie:
using System.Text.RegularExpressions;
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(SomeString)) {
...
}
No .NET 4.0, você pode usar LINQ:
yourText.All
interromperá a execução e retornaráfalse
oschar.IsLetterOrDigit
relatórios da primeira vez ,false
pois o contrato deAll
não pode ser cumprido nessa ocasião .Nota! esta resposta não verifica estritamente alfanuméricos (que normalmente é AZ, az e 0-9). Esta resposta permite personagens locais como
åäö
.Atualização 29/01/2018
A sintaxe acima só funciona quando você usa um único método que tem um único argumento do tipo correto (neste caso
char
).Para usar várias condições, você precisa escrever assim:
fonte
char.IsLetterOrDigit('ก')
retornarátrue
. csharppad.com/gist/f96a6062f9f8f4e974f222ce313df8caVocê poderia fazer isso facilmente com uma função de extensão em vez de um regex ...
Por comentário :) ...
fonte
char.IsLetterOrDigit
IsLetter + IsNumberEmbora eu ache que a solução baseada em regex é provavelmente o caminho que eu escolheria, ficaria tentado a encapsular isso em um tipo.
Agora, quando você precisa de uma string validada, pode fazer com que a assinatura do método exija uma AlphaNumericString e saiba que, se obtiver uma, ela é válida (exceto nulos). Se alguém tentar passar uma string não validada, um erro do compilador será gerado.
Você pode obter mais elaborado e implementar todos os operadores de igualdade, ou uma conversão explícita para AlphaNumericString de uma string simples, se você se importar.
fonte
static public implicit operator string
parteEu precisava verificar AZ, az, 0-9; sem uma regex (mesmo que o OP solicite a regex).
Combinando várias respostas e comentários aqui e discussão de https://stackoverflow.com/a/9975693/292060 , isso testa a letra ou o dígito, evitando letras de outros idiomas e evitando outros números, como caracteres fracionários.
fonte
^\w+$
permitiráa-zA-Z0-9_
Use
^[a-zA-Z0-9]+$
para impedir o sublinhado.Observe que ambos exigem que a string não esteja vazia. Usar em
*
vez de+
permite strings vazias.fonte
^[\w-]+$
Para verificar se a string é uma combinação de letras e dígitos, você pode reescrever a resposta @jgauffin da seguinte maneira usando .NET 4.0 e LINQ:
fonte
Mesma resposta que aqui .
Se você quiser uma
A-z 0-9
verificação ASCII sem regex , não poderá usar,char.IsLetterOrDigit()
pois isso inclui outros caracteres Unicode.O que você pode fazer é verificar os intervalos de código de caracteres.
O que segue é um pouco mais detalhado, mas é para facilitar o entendimento e não para definir o código.
fonte
Com base na resposta de cletus, você pode criar uma nova extensão.
fonte
Aconselho não depender de código pronto e embutido no framework .NET, tente trazer uma nova solução .. é isso que eu faço ..
fonte
char.IsNumber()
método, já que é um código pré-compilado .