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))$/
I seguenti tre corrispondono a 12 o 24 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))|(?:[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])$/
Stati USA
Per convalidare per uno stato utilizzare quanto segue (l'esempio è il Texas):
- TX solo lettere maiuscole:
/^(TX)$/
- tx solo minuscolo:
/^(tx)$/
- TX maiuscolo o minuscolo:
/^([T|t][X|x])$/
Filtro parolacce
Per filtrare parole volgari da una risposta:
/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/
Sostituisci "ENTERPROFANITYHERE" con la tua parolaccia.
Il \b consentirà il passaggio di parole come "assassinio" e "ciao" se inserisci "culo" o "inferno" come parola volgare. Funziona anche se stai cercando di omettere altre parole, nomi ecc. dalle risposte.
Link utili
All'inizio di questa sezione wiki, ti consigliamo di utilizzare https://regex101.com/ per testare/creare espressioni regolari. Puoi anche utilizzare https://www.regextester.com/ per creare espressioni nel caso in cui non sei soddisfatto della prima opzione. Puoi utilizzare https://extendsclass.com/regex-tester.html per visualizzare le espressioni regolari.