2013-10-17 16 views
19

Sto cercando di ottenere un modello angolare per controllare che un nome utente non abbia spazi bianchi o caratteri speciali. Il seguente modulo restituisce false se si immettono spazi bianchi o caratteri speciali. Tuttavia, diventa vero non appena si immette a-z, A-z o 0-9. Ho provato ng-pattern = "/ [^ \ s] + /" e \ S e [^] ma non fanno differenza.scrivere un modello per escludere spazi bianchi e caratteri speciali

<form name="myform"> 
    valid? {{ myform.$valid }} 
    <input type="text" name="username" ng-model="username" ng-pattern="/[a-zA-Z0-9^ ]/" required/> 
</form> 

Ecco il modulo in un Plunk: http://plnkr.co/edit/6T78kyUgXYfNAwB4RHKQ?p=preview

risposta

39

provare il seguente schema:

/^[a-zA-Z0-9]*$/ 

Questo consente solo caratteri alfanumerici.

+2

Questo è tutto! Grazie! Una nota: prima della versione angolare 1.1.0, il modello viene tagliato in modo da aggiungere uno spazio prima o dopo che la stringa non restituirà false. –

+0

@CraigMorgan Siete i benvenuti. Non lavoro affatto con Angular, ma so che è una libreria Javascript e ti ho fornito un'espressione regolare valida Javascript :) –

+11

Solo per aggiungere a questo. Angolare troncerà il modello di input, il che significa che la validazione non si innesca per gli spazi. Puoi aggiungere un 'ng-trim =" falso "' all'input per risolvere questo problema. – Cristian

12

Per trovare la risposta specifica che stavo cercando, avevo già lo schema suggerito da Sniffer /^[a-zA-Z0-9]*$/, ma l'angolare sembrava ancora ignorare gli spazi bianchi iniziali o finali. Come Cristian mentions nei commenti:

Angolare troncerà il modello di input, ovvero la convalida non viene attivata per gli spazi. È possibile aggiungere un ng-trim="false" all'input per risolvere questo problema.

Nota che Angular sta cercando di proteggerti tagliando silenziosamente gli spazi per impostazione predefinita. Nel mio caso, voglio che l'utente sia consapevole del fatto che lo spazio vuoto finale non è valido.

+1

il tuo ng-trim mi ha aiutato molto perché all'interno angolare è necessario per evitare spazi bianchi –

+0

concordato! bel consiglio. sarei andato all'approccio regex, che non è bello come questo dato che ha bisogno di tagliare lo spazio bianco comunque. Grazie! – lostdorje

Problemi correlati