Utilizzo di espressioni regolari
From LimeSurvey Manual
Le espressioni regolari devono iniziare e finire con una barra ("/"). Puoi trovare una buona libreria di espressioni regolari su http://www.regexlib.net/. Questi modelli funzioneranno quasi sempre se sono circondati da barre in avanti.
Per testare la tua espressione regolare puoi utilizzare questo tester per espressioni regolari.
Importante: espressioni regolari in condizioni
Si noti che quando si utilizzano espressioni regolari nell'editor delle condizioni, NON includere la barra iniziale e finale.
Convalida e-mail
Aggiornamento (12/2018): poiché in questi giorni i nomi di dominio non possono contenere solo caratteri speciali come "ü", ma utilizzano anche più di 3 caratteri come nome di dominio come .tech o .company, la seguente regex email controlla solo se "@" e "." esiste all'interno dell'indirizzo email inserito.
/^.+?@.+?\..+$/
Se vuoi convalidare un indirizzo per riga, in un campo di testo lungo più righe:
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\ n)?\n?)+)*)$/
In questa regex obsoleta il nome di dominio è limitato a 3 caratteri che non coprono tutti i domini disponibili:
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
Codici Postali
Codici postali australiani:
/^[0-9]{4}/
Codici postali brasiliani
/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/
Codici postali canadesi
/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/
Codici postali USA
/^[0-9]{5}([- /]?[0-9]{4})?$/
Affinché il codice postale inizi con zero, utilizzare:
/^[0-9]{5}(?:-[0-9]{4})?$/
Codici postali del Regno Unito
/^[AZ][AZ]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i
Si noti che questo non è molto esatto e una convalida più esatta è molto più complessa. Ad esempio, vedi StackOverflow answer e Wikipedia per ulteriori informazioni informazione.
Codici postali francesi
/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)| (^98[46-8]\d{2}$)/
L'espressione sopra è molto precisa e verificherà se esiste o meno il dipartimento francese (prime due cifre), compresi i dipartimenti d'oltremare ei territori d'oltremare (DOM-TOM).
Numeri di telefono
Numeri di telefono USA
/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d {2}[- ]?\d{4}$/
O
/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\ )\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/
Questa seconda opzione corrisponderà a tutti i numeri di telefono canadesi e statunitensi che includono simboli non numerici, tra cui:
. ( ) - (spazio)
Ciò ti consentirà di abbinare i numeri di telefono che assomigliano ai seguenti:
- (555)555 5555
- 555.555.5555
- 555 555 5555
- (555)-555-5555
- 555-555-5555
- 555555555
Numeri di telefono australiani
I seguenti modelli corrispondono a tutti i vari numeri di telefono fissi e mobili australiani, incluso il prefisso nazionale "+61":
- (02) 9123 6535
- 03 1234-5345
- 0412 345 678
- + 612 3456 789
Ma non:
- 234 3450 234
- a234 534 3432
- 134567
- 123456789013
Parentesi, spazi bianchi e trattini vengono ignorati.
Le versioni "Molto preciso:" qui elencate corrispondono alle prime quattro o cinque cifre di un numero per garantire che si tratti di numeri australiani validi.
Il "Non molto preciso:" corrisponde solo alla prima e alla seconda cifra, quindi potrebbe consentire numeri non validi.
Tutti i numeri di telefono australiani (cellulare e rete fissa - prefisso richiesto)
Molto preciso:
/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]? [0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[ 0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2 -7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9] [ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[ 0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/
Non molto preciso:
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/
Tutti i numeri di telefono australiani (solo telefoni fissi - prefisso richiesto)
Molto preciso:
/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0- 9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9 ]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7] |7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -] ?[0-9]))(?:[ -]?[0-9]){6}$/
Non molto preciso:
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/
Numeri di telefono fisso del Nuovo Galles del Sud (prefisso facoltativo)
Molto preciso:
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[ 0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/
Non molto preciso:
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/
Numeri di telefono fissi del Victoria e della Tasmania (prefisso facoltativo)
Molto preciso:
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/
Non molto preciso:
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/
Numeri di telefono fisso del Queensland (prefisso facoltativo)
Molto preciso:
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -] ?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/
Non molto preciso:
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/
Numeri di telefono fisso del South Australia, Northern Territory, Western Australia (prefisso facoltativo)
Molto preciso:
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9] [0-9])$/
Non molto preciso:
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/
Solo numeri di cellulare australiani
Molto preciso:
/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ? [7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/
Non molto preciso:
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/
Numero di telefono belga
/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2 }){2}$/
Numero di cellulare belga
/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/
Numero di telefono francese
/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/
Numero di cellulare francese
/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/
Numero di telefono Lussemburgo
/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/
Numero di cellulare Lussemburgo
/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/
Marchi tedeschi (con segno più o meno facoltativo)
/^[1-6]{1}[\+|\-]?$/
Convalida dell'età
Esempio: Età 20-99
/([2-9][0-9])/
Esempio: Età 18-35
/(1[8-9]|2[0-9]|3[0-5])/
Esempio: Età 19-65
/^(1[8-9]|[2-5][0-9]|6[0-5])$/
Convalida numero
Numeri da 1 a 99999
/^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9 ][0-9]|[1-9][0-9][0-9][0-9][0-9])$/
/^[1-9][0-9]{0,4}$/ fa come sopra ma dovrebbe funzionare un po' più velocemente
Numeri da 1 a 999, da 1.000 a 999.999 a 999.999.999
/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/
Accetta numeri da 1 a 999, da 1.000 a 999.999 a 999.999.999 ma rifiuta numeri come 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333
Convalida numero con decimale facoltativo (per prezzo)
Accetta numeri da 0 a 199, con 2 decimale facoltativo:
/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9]) ?$/
Convalida del numero con separatore delle migliaia
Spazio come separatore, nessun segno meno
/^(?!0)\d{1,3}(\ \d{3})*$/
Punto come separatore, meno consentito
/^-?(?!0)\d{1,3}(\.\d{3})*$/
Forza due punti decimali e accetta numeri da 1,00 a 999.999.999,00 con una virgola facoltativa che delimita migliaia/milioni compresi tutti i seguenti: 1.00, 1.000,00, 12.345,67, 12345,02, 123.456.468,00, 1234566.00, 12345 6789.00 ma non 1 ,23.00, 12,3.4 o 1234,43.04
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Simile a quanto sopra: forza due punti decimali ma accetta uno "0" prima del separatore decimale ",".
/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Come sopra, ma i due punti decimali sono opzionali:
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2}) ?$/
Mese (1-12)
Se vuoi chiedere il mese di nascita di una persona puoi convalidare l'input come segue:
/^[0]*[1-9]$|^[0]*1[0-2]$/
Larghezza minima (impostata su 3 in questo esempio)
/^.{3,}$/
Valuta
Valuta USA (simbolo del dollaro e centesimi facoltativi)
/^\$?\d+(\.(\d{2}))?$/
Controlla l'utilizzo della virgola:
/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/
Prezzo svizzero
Un numero con due numeri decimali dopo la virgola di cui l'ultimo è un 5 o uno 0:
/^(\d+)(\.\d(05)?)?$/
Convalida punteggio
1-10
/^[1-9]{1}$|^10$/
1-100
/^[1-9]?[0-9]{1}$|^100$/
Convalida testo
Il tipo di domanda con testo breve multiplo al momento non supporta risposte minime o massime. Un modo per aggirare questo problema è utilizzare un tipo di domanda a testo libero lungo con un'espressione regolare.
L'espressione seguente verifica almeno una parola per riga per almeno 3 righe e non più di 10 righe:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){2,10}/is
Se vuoi, pronuncia cinque parole per riga, puoi cambiare la prima e l'ultima stella/asterisco in {4,}:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.; :?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/è
Se vuoi una o più parole per riga (tra la riga 1 e la riga 5), puoi cambiare il contenuto che si trova all'interno delle ultime parentesi graffe in 0,4 (nota che usi 0 perché stai già abbinando la prima riga).
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){0,4}/is
Conteggio parole
Quanto segue limita il numero di parole consentito a un minimo di 1 e un massimo di 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Per aumentare il minimo modificare la parte zero di {0,199}.
Per aumentare o diminuire il massimo modificare la parte "199" di {0,199}.
Convalida del tempo
Esistono diversi modi per scrivere i formati dell'ora. Alcune delle possibili opzioni sono 12 ore o 24 ore, con o senza secondi. Sebbene sia possibile utilizzare il tipo di domanda data (può anche catturare il tempo), puoi utilizzare il tipo di domanda breve a testo libero con uno dei le seguenti espressioni regolari di convalida.
Le seguenti tre stringhe di convalida testano per 24 ore (in ordine di apparizione) senza secondi, con secondi facoltativi e infine con secondi obbligatori:
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/
I seguenti tre corrispondono a 12 ore, come sopra con secondi, secondi opzionali e con secondi richiesti:
/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/
/^(?:00:[0-5][0-9](?::[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?::[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?::[0-5][0-9])? (?:pm|PM))$/
/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))$/
The following three match either 12 or 24 hour time as above with seconds, optional seconds and with seconds required:
/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9])$/
/^(?:(?:00:[0-5][0-9](?[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9](?[0-5][0-9])?)$/
/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$/
US states
To validate for one state use the following (example is Texas):
- TX uppercase only:
/^(TX)$/
- tx lowercase only:
/^(tx)$/
- TX upper or lowercase:
/^([T|t][X|x])$/
Profanity Filter
To filter profanity words from an answer:
/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/
Replace "ENTERPROFANITYHERE" with your bad word.
The \b will allow passing of words such as "assassination" and "hello" if you enter "ass" or "hell" as your profanity word. This also works if you are trying to omit other words, names etc. from answers.
Helpful links
In the beginning of this wiki section, we recommend you to use https://regex101.com/ to test/create regular expressions. You can also use https://www.regextester.com/ to create expressions in case you are unhappy about the first option. You can use https://extendsclass.com/regex-tester.html to visualize regular expressions.