Utilizzare un RegularExpressionValidator per limitare contare una parola?
-
20-09-2019 - |
Domanda
Voglio usare un ASP.NET RegularExpressionValidator per limitare il numero di parole in una casella di testo. (Il RegularExpressionValidator è la mia soluzione preferita perché farà entrambi i controlli lato server client e).
Quindi, quale sarebbe il Regex corretto per mettere in RegularExpressionValidator che conterà le parole e far rispettare una parola-limite? Per, diciamo, 150 parole.
(NB: vedo che questa domanda è simili, ma le risposte fornite sembrano fare affidamento anche sul codice, come Split () quindi non credo che nessuno di loro potrebbe collegare a una RegularExpressionValidator è per questo che sto chiedendo di nuovo)
Soluzione
Dal ^
e $
è implicitamente set con RegularExpressionValidators , utilizzare il seguente:
(\S*\s*){0,10}
Il 0 qui permette stringhe vuote (più precisamente 0 parole) e 150 è il numero massimo di parole da accettare. Regolare questi se necessario per aumentare / diminuire il numero di parole accettati.
È possibile che questo regex non è avido, così avrai un match veloce versi quella data in questione si fa riferimento. (\b.*\b){0,10}
è avido, così come avete aumentato il numero di parole che si verifichi una riduzione delle prestazioni.
Altri suggerimenti
Ecco un rapido riferimento per le espressioni regolari: http://msdn.microsoft.com/en-us/library/az24scfc.aspx
È possibile utilizzare questo sito per testare le espressioni: http://regexpal.com/
Ecco il mio esempio espressione regolare che funziona sia con numero minimo e massimo di parola (e correzioni di bug con spaziatura leader):
^\s*(\S+\s+|\S+$){10,150}$
Controlla questo sito:
http://lawrence.ecorp.net/inet/samples /regexp-validate.php#count
la sua regex javascript, ma è molto simile a asp.net
il suo qualcosa di simile:
(\ b [a-z0-9] + \ b. *) {4,}