Como posso verificar se uma expressão regular C# está tentando corresponder a strings 1- (e somente-1)-Caracter?
Pergunta
Talvez seja uma pergunta muito rara (ou até idiota), mas eu preciso dela no meu aplicativo.
Como posso verificar se uma expressão regular C# está tentando combinar strings de 1 caractere?
Isso significa que eu permito apenas que os usuários pesquisem strings de 1 caractere. Se o usuário estiver tentando pesquisar strings com vários caracteres, uma mensagem de erro será exibida para os usuários.
Eu me deixei claro?
Obrigado.
Peter
PS: Vi uma resposta sobre o cálculo da duração final das cordas correspondentes, mas, por algum motivo desconhecido, a resposta se foi. Eu pensei por um tempo, acho que calcular o comprimento final das cordas correspondentes é bom, embora isso seja lento. No entanto, a pergunta original é muito rara e tediosa.
Solução
Em vez de validar a expressão regular, que pode ser complicada, você pode aplicá -la apenas em caracteres únicos em vez de toda a string.
Se isso não for possível, convém limitar as possibilidades de expressão regular a alguns recursos. Por exemplo, o usuário pode inserir apenas caracteres para corresponder ou caracteres para excluir. Em seguida, você constrói o regex em seu código.
por exemplo:
ABC
fósforos[ABC]
^ABC
fósforos[^ABC]
A-Z
fósforos[A-Z]
#
fósforos[0-9]
\w
fósforos\w
AB#x-z
fósforos[AB]|[0-9]|[x-z]|\w
- Quais casos você precisa apoiar?
Isso seria um pouco fácil de analisar e validar.
Outras dicas
um regexp seria .{1}
Isso permitirá qualquer char embora. Se você quer apenas alpanumérico, pode usar [a-z0-9]{1}
ou abreviação /w{1}
Outra opção é limitar o número de chars que um usuário pode digitar em um campo de entrada. Defina um comprimento máximo nele.
Outra opção é salvar o campo de entrada de formulários em um char e não uma string, embora você precise de algum manuseio para evitar erros.
Por que não usar o maxlength e salvar em um char.
Você pode procurar por desconto *
, +
, {}
, ?
etc. e conte o número de caracteres (não se esqueça de achatar o []
como um personagem).
Basicamente, você tem que analisar seu regex.