2010-02-12 5 views
9

Sto lavorando su un php + progetto basato javascript e hanno già fatto una pagina mockup a: my websiteCome usare regex javascript per verificare la presenza di campi del modulo "vuoti"?

sapevo come utilizzare javascript o php per verificare se un particolare campo di forma è "vuoto" o no , ovvero, se contiene caratteri alfanumerici diversi dai caratteri whitepsace (ad esempio, spazio, tab e newline).

Tuttavia, il mio normale apporach non funziona più poiché il plug-in jquery che sto utilizzando ora si basa su espressioni regolari per convalidare i campi.

Se si passa alla terza scheda (3. Riempi le informazioni di spedizione ed effettua il pagamento), è possibile inserire qualcosa nel campo Nome e lo fa automaticamente. Belle. Tuttavia, se lo si limita semplicemente a inserire alcuni caratteri spaziali e si passa al campo successivo, beh, si sente comunque bene, il che non è corretto poiché il nome di battesimo non è niente!

Il problema? Sul retro ha un'espressione regolare come questa:

"noSpecialCaracters":{ 
        "regex":"/^[0-9a-zA-Z ]+$/", 
        "alertText":"* No special caracters allowed"}, 

Questo non filtra i caratteri vuoti.

Ho cercato on-line e fatto del mio meglio per fare un altro regex per abbinare, ho cercato

"regex":"/^[^]+$/" 

per corrispondenza caratteri non vuoti, ma non va bene ...

Chiunque può aiutare me fuori? Molte grazie in anticipo!

+0

Quale plug-in di convalida stai utilizzando? Se è la convalida della bassistanza, ha una proprietà JSON che puoi passare. Utilizzo: 'richiesto: true' – alex

+0

Ciao Alex, questa è la pagina del plugin: http://www.position-absolute.com/articles/jquery-form- validatore-perché-form-validation-is-a-mess/ –

risposta

10

Prova questo per non spazi bianchi:

([^\s]*) 

Esempio:

/([^\s])/.test(" A"); //TRUE 
/([^\s])/.test(" "); //FALSE 
+0

Hi Nick: ho provato [code] "regex": "/^([^ \ s] *) $ /", \t \t \t \t \t [/ code] e [code] "regex": "/^[^ \ s] * $ /", \t \t \t \t \t [/ code] ma nessuno dei due funziona. Scusate, non sono affatto professionista in regex ... –

+1

@Michael - Prova: '/ ([^ \ s]) /' –

+0

Ciao Nick: Sì, questo funziona per un javascript vanilla. Ma per il plugin ... non lo farà ancora. Penso che non sia il probelma regex. Probabilmente qualcosa non va in altri posti. Grazie per l'aiuto! –

0

Si consiglia di provare avvolgendo l'espressione nella seguente ^\s*(expression)\s*$. Quindi usa i gruppi per trovare le corrispondenze "tagliate". Ciò elimina solo gli spazi bianchi finali o iniziali.

È possibile forzare l'utente a immettere il testo tagliato o accettare con garbo input non formattato (meglio) poiché ritengo che copiare e incollare il testo spesso lasci degli spazi bianchi finali o di trascinamento di cui l'utente potrebbe non essere a conoscenza.

0
/^\s*[0-9a-zA-Z][0-9a-zA-Z ]*$/ 

che garantisce che almeno un carattere non sia uno spazio bianco ed è uno dei caratteri consentiti.

Si potrebbe anche prendere in considerazione altri personaggi come il trattino (-) o un apostrofo ('), che può apparire anche in nomi ...

/^\s*[0-9a-zA-Z][0-9a-zA-Z '-]*$/ 
+0

Ciao Charles: È vero che posso costringere l'utente a non inserire nessuno spazio bianco principale e che in questo caso sarebbe sicuramente di aiuto. Tuttavia, voglio ancora sapere come aggirare questo problema, con l'aiuto di voi ragazzi, ovviamente. –

+0

beh, se vuoi che siano in grado di avere spazi bianchi iniziali, questo dovrebbe farlo /^ \ s * [0-9a-zA-Z] [0-9a-zA-Z] * $ / –

1

Per rispondere alla tua domanda, l'espressione regolare minima è /\S/ che sarà corrisponde finché c'è almeno un carattere non di uno spazio bianco.

Tuttavia, probabilmente non si desidera che qualcuno inserisca un nome di "12345" o "!!!", quindi potrebbe essere preferibile utilizzare /[a-z]/i poiché questa espressione regolare verrà eseguita solo se è presente almeno una carattere alfabetico.

9
function anyChar(str){ 
    return /\S+/.test(str); 
} 

restituirà false se i dati emty

1

sto usando

/^\s*\S+.*/ 

che significa

  • zero o più caratteri di spaziatura (\s*), seguita da
  • uno o più caratteri non spazi bianchi (\S+), seguito da
  • niente affatto, spazio bianco o meno (.*).

Ciò consente una singola parola o più parole. All'inizio sto permettendo uno spazio vuoto perché so quanto sia facile perdere un singolo spazio all'inizio ed essere davvero confuso sul motivo per cui il tuo input non è permesso: |

La Mozilla Developer Network ha un ottimo JavaScript regex page come riferimento.

Problemi correlati