2009-11-16 8 views
6

qualcuno può dirmi che cosa la sintassi per una regex sarebbe che permetterebbe solo i seguenti caratteri:Regex per a-z, 0-9,. e -

  • az (solo lettere minuscole)
  • 0-9
  • periodo, trattino, underscore

Inoltre, la stringa deve iniziare con solo una lettera minuscola (az) e non può contenere spazi o caratteri diversi da quelli sopra elencati.

vi ringrazio in anticipo per l'aiuto, Justin

risposta

10

Si può fare: "^[a-z][-a-z0-9\._]*$"

Ecco la ripartizione

  • ^ all'inizio della riga
  • [a-z] classe di caratteri per i valori più bassi , per abbinare la prima lettera
  • [-a-z0-9\._] classe di caratteri per il resto del valore richiesto
  • * zero o più per l'ultima classe
  • $ fine stringa
+0

questo è sbagliato. non corrisponderà al trattino, ma si avrà un intervallo dal punto al carattere di sottolineatura. –

+0

Quando uso questa espressione regolare con la seguente stringa: "test", viene visualizzato questo errore: "preg_match() [function.preg-match]: Nessun delimitatore finale '^' trovato" Qualche idea di cosa significa? – Justin

+0

'*' è zero o più ripetizioni, non uno o più. –

0
^[a-z][a-z0-9._\s-]* 
+1

questo è sbagliato. non corrisponderà al trattino, che deve essere il primo o l'ultimo della classe da prendere alla lettera. –

+0

risolto, grazie per aver notato – Dmitry

2
[-._a-z0-9] 

o

[-.[:lower:][:digit:]] 

o ...

dipende da quale versione delle espressioni regolari a cui si punta.

+0

Lo userò con preg_match in php. – Justin

+0

quindi è /^[a-z][-._a-z0-9]*$/ –

Problemi correlati