Actions

Utilizzo di espressioni regolari

From LimeSurvey Manual

This page is a translated version of the page Using regular expressions and the translation is 100% complete.

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.

Template:Nota

  Attenzione : Si prega di notare che tutti gli esempi seguenti sono scritti su una riga!



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.