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)

Foi útil?

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,}

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