Como posso verificar se uma expressão regular C# está tentando corresponder a strings 1- (e somente-1)-Caracter?

StackOverflow https://stackoverflow.com/questions/3870344

  •  28-09-2019
  •  | 
  •  

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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top