2009-02-17 1 views
7

Qualcuno ha un'espressione regolare che potrebbe funzionare per limitare il numero di parole in una risposta? Per esempio, mi piacerebbe usarlo con jQuery validate in modo da poter limitare una textbox/textarea ad avere 250 parole. Le caselle saranno in chiaro.Limitare il numero di parole di una risposta con un'espressione regolare

Ho fatto qualche ricerca su google, ma nessuno di quelli che ho trovato erano molto buoni. Si concentrano principalmente sul fare \ b \ w + \ b ma ho avuto difficoltà a farlo funzionare.

+0

Si potrebbe avere più senso per contare i caratteri - non c'è niente di impedire che le persone da solo e di dattilografo e digitando senza spazi ... detto questo, la risposta di VonC sembra eccellente! –

+0

Che dire della punteggiatura? Stai richiedendo ai tuoi utenti di digitare solo caratteri di parole e spazi bianchi? –

risposta

8

Potrebbe provare:

^(?:\b\w+\b[\s\r\n]*){1,250}$ 

che limiterebbe a 250 parole su più righe.

temo che proposizione iniziale di Alan:

/^\w+(?:\s+\w+){0,249}$/ 

potrebbe essere un caso di catastrophic backtracking

Quando nidificazione operatori di ripetizione, assolutamente certi che c'è un solo modo per abbinare lo stesso match

+0

Questo sembrava funzionare nei miei test. Non sono sicuro che questa versione abbia degli aspetti negativi, ma per ora accetterò questa versione. – Jonathan

+0

Questo funziona per me, tranne se inserisco ", @ restituisce false. Puoi dirmi cosa devo fare? Grazie – iOSAppDev

+0

I limiti di parola @iOSAppDev (http://www.regular-expressions.info/wordboundaries.html) dipendono sul sapore regex che stai usando. Se semplicemente aggiungi le virgolette come separatore nella mia regex originale (es: '^ (?: \ b \ w + \ b [" \ s \ r \ n] *) {1,250} $ ') non funziona, quindi è meglio cercare una soluzione alternativa (che significa "accanto alla regex"). – VonC

3

Come dividere il testo con un'espressione regolare (ad esempio "\ s +") e quindi il conteggio della lunghezza dell'elenco risultante? Sarebbe un po 'più facile da leggere.

0

Ecco l'espressione regolare che utilizzo per la convalida del conteggio delle parole.

(\w*\W*){0,250} 
1

Questo ha funzionato bene per me, per esempio, se si desidera un limite di 6-parola:

^(?:\w+\W+){0,5}(?:\w+)$