Use um regulamento Validador para limitar uma contagem de palavras?
-
20-09-2019 - |
Pergunta
Quero usar um ASP.NET regulAxpressionValidator para limitar o número de palavras em uma caixa de texto. (O regularexpressionValidator é minha solução favorita porque fará verificações do lado do cliente e do servidor).
Então, qual seria o regex correto para colocar no regulamento Validador que contará as palavras e aplicará um limite de palavra? Pois, digamos, 150 palavras.
(NB: Eu vejo isso essa questão é semelhante, mas as respostas dadas parecem também depender de código como Split (), então não acho que nenhum deles possa se conectar a um regulador de expressão de expressão, e é por isso que estou perguntando novamente)
Solução
Desde ^
e $
é implicitamente definido com regulos de validores, use o seguinte:
(\S*\s*){0,10}
O 0 aqui permite strings vazios (mais especificamente 0 palavras) e 150 é o número máximo de palavras a aceitar. Ajuste -os conforme necessário para aumentar/diminuir o número de palavras aceitas.
O regex acima é não-greedoso, então você terá uma correspondência mais rápida versículos a que você refere na pergunta. (\b.*\b){0,10}
é ganancioso, assim como você aumentou o número de palavras, você verá uma diminuição no desempenho.
Outras dicas
Aqui está uma referência rápida para expressões regulares:http://msdn.microsoft.com/en-us/library/az24scfc.aspx
Você pode usar este site para testar as expressões:http://regexpal.com/
Aqui está o meu exemplo regex que funciona com a contagem mínima e máxima de palavras (e corrige o bug com espaçamento principal):
^\s*(\S+\s+|\S+$){10,150}$
Verifique este site:
http://lawrence.ecorp.net/inet/samples/regexp-validate.php#count
seu javascript regex, mas é muito semelhante ao ASP.NET
é algo assim:
( b [a-z0-9]+ b.*) {4,}