2014-07-07 16 views
5

Si è bloccato un po '(RegEx non è il mio punto di forza!) - Ho bisogno di un'espressione che verrà convalidata contro qualsiasi stringa contenente solo numeri e lettere ma deve avere almeno una di ciascuna (le lettere maiuscole e minuscole sono intercambiabili e permesse). Non può contenere caratteri speciali o spazi bianchi.RegEx: deve avere almeno un numero e una lettera ma nessun altro carattere/spazio vuoto

Facendo qualche prima ricerca ho trovato questo, ma non esclude gli spazi e nonostante i miei tentativi in ​​questo senso non posso modificarlo per escludere spazi e caratteri speciali:

^.*(?=.*\d)(?=.*[a-zA-Z]).*$ 

Alcuni esempi di stringhe che hanno bisogno per convalidare:

  • ieoEon43
  • 43ifsiojfdfs
  • 6i
  • ijf943kNFSfsf

Qualsiasi aiuto sarebbe molto apprezzato! Se è importante, eseguo queste espressioni in JavaScript.

risposta

6

Prova questo:

/^(?=.*[a-z])(?=.*\d)[a-z\d]+$/i 

Regex101 Demo

Spiegazione:

Regular expression visualization

Debuggex Demo

Edit: spec fisso problema dei personaggi ial.

+0

Grazie - che ha aiutato con lo spazio bianco - ma sembra accettare ancora i caratteri speciali (es: fdfjf4343FFsk3 £ 3% 3 £ "& * (* & *) passa) – trvo

+0

Siamo spiacenti, perdere lo speciale i caratteri puntano al primo passaggio. Funziona subito –

+0

Perfetto: grazie – trvo

-4

Iv fatto una demo su regxr 1.0 in base a ciò che ho capito dalla tua domanda.

Se seguite questo link potete vedere la demo da soli: Regexr demo

AGGIORNATO: la regex è: /^([a-z]+[0-9]+|[0-9]+[a-z]+)$/

si può fare caso in sensibile: /^([a-z]+[0-9]+|[0-9]+[a-z]+)$/i

+0

Convalida 'a', che non contiene un numero. –

2

altro tentativo di divertimento e gloria! (È più corta!)

^([a-z]+\d+|\d+[a-z]+)\w*$ 

Regular expression visualization

Debuggex Demo

Edit3:

fatto una piccola correzione ed è ora DOUBLE la velocità dell'altro risposta !!!

JSPERF

+0

Bella idea, ma potrebbe non riuscire su stringhe che iniziano e finiscono con la stessa classe di caratteri ('1a1' o' a1a'). –

+0

@TimPietzcker risolto, spero! – Mosho

+1

Molto meglio (anche se '\ w' corrisponde anche a' _') :) –

Problemi correlati