Verifica se una stringa di testo corrisponde a un modello.

Descrizione

La funzione IsMatch verifica se una stringa di testo corrisponde a un modello che può contenere caratteri ordinari, modelli predefiniti o un'espressione regolare.

Usare IsMatch per convalidare ciò che un utente ha digitato in un controllo Text input. Ad esempio, è possibile verificare se l'utente ha immesso un indirizzo di posta elettronica valido prima che il risultato venga salvato nell'origine dati. Se l'immissione non corrisponde ai criteri, aggiungere altri controlli che richiedono all'utente di correggerla.

Per impostazione predefinita, la funzione IsMatch fa distinzione tra lettere maiuscole e minuscole nella corrispondenza dell'intera stringa di testo. È possibile modificare questo comportamento specificando uno o più MatchOptions.

IsMatch restituisce true se la stringa di testo corrisponde al modello o false in caso contrario.

Modelli

La chiave per l'uso di IsMatch è descrivere il criterio di corrispondenza. Il modello in una stringa di testo si descrive come una combinazione di:

  • Caratteri normali, ad esempio "abc" o "123".
  • Modelli predefiniti, ad esempio Letter, MultipleDigits o Email. L'enumerazione Match definisce questi modelli.
  • Codici di espressioni regolari, ad esempio "\d+\s+\d+" o "[a-z]+".

Combinare questi elementi usando l'operatore di concatenazione delle stringhe &. Ad esempio, "abc" & Digit & "\s+" è un modello valido che corrisponde ai caratteri "a", "b" e "c", seguiti da una cifra da 0 a 9, seguita da almeno uno spazio vuoto.

Caratteri ordinari

Il modello più semplice è una sequenza di caratteri normali che devono corrispondere esattamente.

Ad esempio, la stringa "Hello" corrisponde esattamente al modello "Hello". Non più e non meno. La stringa "hello!" non corrisponde al modello a causa del punto esclamativo alla fine e della h minuscola. Vedere MatchOptions per informazioni su come modificare questo comportamento.

Nel linguaggio del modello, alcuni caratteri sono riservati per scopi speciali. Per usare questi caratteri, aggiungere un prefisso al carattere con una \(barra rovesciata) per indicare che il carattere deve essere considerato letteralmente oppure usare uno dei modelli predefiniti. Questa tabella elenca i caratteri speciali:

Carattere speciale Descrizione
. punto
? punto interrogativo
* asterisco
+ segno di addizione
( ) parentesi
[ ] parentesi quadre
{ } parentesi graffe
^ accento circonflesso
$ segno di dollaro
| barra verticale o pipe
\ barra rovesciata

Ad esempio, si può ricercare una corrispondenza a "Hello?" usando il modello "Hello\?" con una barra rovesciata prima del punto interrogativo.

Modelli predefiniti

I modelli predefiniti offrono un modo semplice per trovare la corrispondenza tra un set di caratteri o una sequenza di più caratteri. Usare l'operatore di concatenazione delle stringhe & per combinare stringhe di testo con i membri dell'enumerazione Match:

Enumerazione Match Descrizione Espressione regolare
Any Corrisponde a qualsiasi carattere. .
Comma Corrisponde a una virgola. ,
Digit Corrisponde a una cifra singola (da "0" a "9"). \d
Email Corrisponde a un indirizzo di posta elettronica che contiene un simbolo "@" e un nome di dominio che contiene un punto (".") .+@.+\.[^\.]{2,}
Hyphen Corrisponde a un trattino. \-
LeftParen Corrisponde a una parentesi "(" aperta. \(
Letter Corrisponde a una lettera. \p{L}
MultipleDigits Corrisponde a una o più cifre. \d+
MultipleLetters Corrisponde a una o più lettere. \p{L}+
MultipleNonSpaces Corrisponde a uno o più caratteri che non aggiungono uno spazio vuoto (spazio, tabulazione, nuova riga). \S+
MultipleSpaces Corrisponde a uno o più caratteri che aggiungono uno spazio vuoto (spazio, tabulazione, nuova riga). \s+
NonSpace Corrisponde a un singolo carattere che non aggiunge uno spazio vuoto. \S
OptionalDigits Corrisponde a zero, a una o a più cifre. \d
OptionalLetters Corrisponde a zero, a una o a più lettere. \p{L}
OptionalNonSpaces Corrisponde a zero, a uno o a più caratteri che non aggiungono uno spazio vuoto. \S
OptionalSpaces Corrisponde a zero, a uno o a più caratteri che aggiungono uno spazio vuoto. \s
Period Corrisponde a un punto ("."). \.
RightParen Corrisponde a una parentesi ")" chiusa. \)
Space Corrisponde a un carattere che aggiunge uno spazio vuoto. \s

Ad esempio, il modello "A" & MultipleDigits corrisponderà alla lettera "A" seguita da una o più cifre.

Espressioni regolari

Il modello usato da IsMatch è un'espressione regolare. I caratteri ordinari e i modelli predefiniti illustrati precedentemente consentono di creare espressioni regolari.

Le espressioni regolari sono molto efficaci, sono disponibili in molti linguaggi di programmazione e sono usate per molti scopi. Questo articolo non può illustrare tutti gli aspetti delle espressioni regolari. Sul Web è possibile trovare un'ampia gamma di informazioni ed esercitazioni in grado di assistere gli utenti.

Le espressioni regolari usano dialetti diversi e PowerApps usa una variante del dialetto JavaScript. Per altre informazioni, vedere Sintassi delle espressioni regolari.

Nella tabella dell'enumerazione Match illustrata in precedenza, ogni enumerazione si espande in un'espressione regolare e la stringa di testo nella colonna "Espressione regolare" definisce l'espressione.

Opzioni di corrispondenza

È possibile modificare il comportamento di IsMatch specificando una o più opzioni, combinate tramite l'operatore di concatenazione di stringhe (&).

Per impostazione predefinita, IsMatch verifica una corrispondenza completa della stringa di testo intera.

Enumerazione MatchOptions Descrizione Impatto su un'espressione regolare
BeginsWith Il modello deve corrispondere a partire dall'inizio del testo. Aggiunge un simbolo ^ all'inizio dell'espressione regolare.
Complete Impostazione predefinita. Il modello deve corrispondere al testo intero, dall'inizio alla fine. Aggiunge un simbolo ^ all'inizio e un simbolo $ alla fine di un'espressione regolare.
Contains Il modello deve essere incluso in una posizione qualsiasi nel testo e non necessariamente all'inizio o alla fine. Non modifica l'espressione regolare.
EndsWith Il modello deve corrispondere alla fine del testo. Aggiunge un simbolo $ alla fine dell'espressione regolare.
IgnoreCase Valuta la corrispondenza delle lettere senza distinzione tra maiuscole e minuscole. Per impostazione predefinita, la corrispondenza fa distinzione tra lettere maiuscole e minuscole. Non modifica l'espressione regolare.
Multiline Trova la corrispondenza su più righe. Non modifica l'espressione regolare.

Sintassi

IsMatch( Testo, Modello [, Opzioni ] )

  • Testo: obbligatorio. La stringa di testo da verificare.
  • Modello: obbligatorio. Il modello da verificare, come stringa di testo. Concatenare modelli predefiniti dell'enumerazione Match o specificare un'espressione regolare.
  • Opzioni: facoltativo. Una combinazione di stringhe di testo dei valori dell'enumerazione MatchOptions. Per impostazione predefinita, viene usato MatchOptions.Complete.

Esempi

Caratteri ordinari

Si supponga che l'applicazione contiene un controllo di input di testo denominato TextInput1. L'utente immette i valori in questo controllo da archiviare in un database.

L'utente digita Hello world in TextInput1.

Formula Descrizione Risultato
IsMatch( TextInput1.Text, "Hello world" ) Verifica se l'input dell'utente corrisponde esattamente alla stringa "Hello world" true
IsMatch( TextInput1.Text, "Good bye" ) Verifica se l'input dell'utente corrisponde esattamente alla stringa "Good bye" false
IsMatch( TextInput1.Text, "hello", Contains ) Verifica se l'input dell'utente contiene la parola "hello" (distinzione tra lettere maiuscole e minuscole). false
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Verifica se l'input dell'utente contiene la parola "hello" (senza distinzione tra lettere maiuscole e minuscole). true

Modelli predefiniti

Formula Descrizione Risultato
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit & Digit ) Corrisponde a un codice fiscale degli Stati Uniti true
IsMatch( "joan@contoso.com", Email ) Corrisponde a un indirizzo di posta elettronica true
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Corrisponde a una sequenza di cifre, un punto, quindi zero o più cifre. true
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) Corrisponde a una sequenza di cifre, un punto, quindi zero o più cifre. Dato che il punto non è incluso nel testo, il modello non corrisponde. false

Espressioni regolari

Formula Descrizione Risultato
IsMatch( "986", "\d+" ) Corrisponde a un numero intero maggiore di zero. true
IsMatch( "1.02", "\d+(.\d\d)?" ) Corrisponde a un importo di valuta positivo. Se l'input contiene un separatore decimale, deve anche contenere 2 caratteri numerici dopo il separatore decimale. Ad esempio, 3.00 è valido, ma non 3.1. true
IsMatch( "-4.95", "(-)?\d+(.\d\d)?" ) Corrisponde a un importo di valuta positivo o negativo. Se l'input contiene un separatore decimale, deve anche contenere 2 caratteri numerici dopo il separatore decimale. true
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) Corrisponde a un codice fiscale degli Stati Uniti. Convalida il formato, il tipo e la lunghezza del campo di input specificato. La stringa da far corrispondere deve avere 3 caratteri numerici seguiti da un trattino, 2 caratteri numerici seguiti da un trattino e quindi 4 caratteri numerici. true
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Come nell'esempio precedente, ma uno dei trattini non è nella posizione corretta nell'input. false
IsMatch( "weakpassword", "(?!^[0-9]*$)(?!^[a-zA-Z]*$)([a-zA-Z0-9]{8,10})" ) Convalida una password complessa, che deve contenere 8, 9 o 10 caratteri, almeno una cifra e almeno un carattere alfabetico. La stringa non deve contenere caratteri speciali. false
IsMatch( "http://microsoft.com", "(ht|f)tp(s?):\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9-.\?\,\'\/\+&%\$#_]*)?" ) Convalida un URL di ftp, http o https. true