Testar om en textsträng matchar ett mönster.

Beskrivning

Funktionen IsMatch testar om en textsträng matchar ett mönster som kan innefatta vanliga tecken, fördefinierade mönster eller ett reguljärt uttryck.

Använd IsMatch för att verifiera vad en användare har skrivit i en textindatakontroll. Exempelvis kan du kontrollera om användaren har angett en giltig e-postadress innan resultatet sparas till din datakälla. Om posten inte matchar dina kriterier kan du lägga till andra kontroller som uppmanar användaren att korrigera posten.

Som standard utför IsMatch en skiftlägeskänslig matchning på hela textsträngen. Du kan ändra det här beteendet genom att ange ett eller flera MatchOptions.

IsMatch returnerar true om textsträngen matchar mönstret eller false om den inte gör det.

Mönster

IsMatch används genom att man beskriver det mönster som ska matchas. Du beskriver mönstret i en textsträng som en kombination av:

  • Vanliga tecken, till exempel "abc" eller "123".
  • Fördefinierade mönster, till exempel Letter, MultipleDigits eller Email. (Uppräkningen Match definierar dessa mönster.)
  • Reguljära uttryckskoder som "\d+\s+\d+" eller "[a-z] +".

Kombinera de här elementen genom att använda strängsammanfogningens operator &. Till exempel är "abc" & Digit & "\s+" ett giltigt mönster som matchar tecknen "a", "b" och "c", följt av en siffra från 0 till 9, följt av minst ett blanksteg.

Vanliga tecken

Den enklaste mönstret är en sekvens av vanliga tecken som ska matchas exakt.

Exempelvis matchar strängen "Hello" mönstret "Hello" exakt. Varken mer eller mindre. Strängen "hello!" matchar inte mönstret på grund av utropstecknet i slutet och att bokstaven "h" är gemen. (Se MatchOptions för metoder att ändra det här beteendet.)

I mönsterspråket är vissa tecken reserverade för speciella ändamål. Om du vill använda dessa tecken sätter du antingen ett prefix på tecknet med ett \ (omvänt snedstreck) för att visa att tecknet ska tolkas bokstavligen, eller så använder du något av de fördefinierade mönstren. Följande tabell visar specialtecknen:

Specialtecken Beskrivning
. punkt
? frågetecken
*** asterisk
+ plus
( ) parenteser
[ ] hakparenteser
{ } klammerparenteser
^ cirkumflex
$ dollartecken
| lodrätt streck
**** omvänt snedstreck

Du kan till exempel matcha "Hello?" med hjälp av mönstret "Hello\?" med ett omvänt snedstreck före frågetecknet.

Fördefinierade mönster

Fördefinierade mönster är ett enkelt sätt att matcha en uppsättning tecken, eller en sekvens med flera tecken. Använd strängsammanfogningens operator & till att kombinera egna textsträngar med medlemmar i uppräkningen Match:

Uppräkningen Match Beskrivning Reguljärt uttryck
Any Matchar alla tecken. .
Comma Matchar ett kommatecken. ,
Digit Matchar en entalssiffra ("0" till "9"). \d
Email Matchar en e-postadress som innehåller symbolen "at" ("@") och ett domännamn som innehåller en punkt (".") .+@.+\.[^\.]{2,}
Hyphen Matchar ett bindestreck. \-
LeftParen Matchar en vänsterparentes "(". \(
Letter Matchar en bokstav. \p{L}
MultipleDigits Matchar en eller flera siffror. \d+
MultipleLetters Matchar en eller flera bokstäver. \p{L}+
MultipleNonSpaces Matchar ett eller flera tecken som inte lägger till blanksteg (mellanslag, tabb, ny rad). \S+
MultipleSpaces Matchar ett eller flera tecken som lägger till blanksteg (mellanslag, tabb, ny rad). \s+
NonSpace Matchar ett enskilt tecken som inte lägger till blanksteg. \S
OptionalDigits Matchar ingen, en eller flera siffror. \d
OptionalLetters Matchar ingen, en eller flera bokstäver. \p{L}
OptionalNonSpaces Matchar inget, ett eller flera tecken som inte lägger till blanksteg. \S
OptionalSpaces Matchar inget, ett eller flera tecken som lägger till blanksteg. \s
Period Matchar en punkt ("."). \.
RightParen Matchar en högerparentes ")". \)
Space Matchar ett tecken som lägger till blanksteg. \s

Till exempel kommer mönstret "A" & MultipleDigits matcha bokstaven "A" följt av en eller flera siffror.

Reguljära uttryck

Mönstret som används av IsMatch är ett reguljärt uttryck. Vanliga tecken och fördefinierade mönster som beskrivs ovan kan utgöra reguljära uttryck.

Reguljära uttryck är mycket kraftfulla, finns i många programmeringsspråk och används för en mängd olika syften. Det går inte att i den här artikeln beskriva alla aspekter av reguljära uttryck, men det finns mängder av information och självstudier på nätet om du vill ha mer information.

Reguljära uttryck har olika dialekter och i PowerApps används en variant av JavaScript-dialekten. Mer information finns i Syntax för reguljära uttryck.

I uppräkningstabellen Match ovan expanderas varje uppräkning till ett reguljärt uttryck och textsträngen i kolumnen "Regular Expression" definierar det uttrycket.

Alternativ för matchning

Du kan ändra beteendet för IsMatch genom att ange ett eller flera alternativ, som du kan kombinera genom att använda operatorn för strängsammanfogning (&).

Som standard testar IsMatch en fullständig matchning av hela textsträngen.

MatchOptions Enum Beskrivning Påverkan på reguljära uttryck
BeginsWith Mönstret måste matcha från början av texten. Lägger till ^ i början av det reguljära uttrycket.
Complete Standard. Mönstret måste matcha hela texten, från början till slut. Lägger till ^ i början och $ i slutet av det reguljära uttrycket.
Contains Mönstret måste finnas någonstans i texten, men behöver inte inleda eller avsluta den. Ändrar inte det reguljära uttrycket.
EndsWith Mönstret måste matcha slutet av texten. Lägger till $ i slutet av det reguljära uttrycket.
IgnoreCase Behandlar matchningen av bokstäver på ett skiftlägesokänsligt sätt. Som standard är matchning skiftlägeskänsligt. Ändrar inte det reguljära uttrycket.
Multiline Matchar över flera rader. Ändrar inte det reguljära uttrycket.

Syntax

IsMatch( Text, Pattern [, Options ] )

  • Text – Krävs. Textsträngen som ska testas.
  • Pattern – Krävs. Mönster som ska testas, som en textsträng. Sammanfoga fördefinierade mönster som uppräkningen Match definierar, eller ange ett reguljärt uttryck.
  • Options – Valfritt. En textsträngskombination av uppräkningsvärden i MatchOptions. Som standard används MatchOptions.Complete.

Exempel

Vanliga tecken

Vi antar att din app innehåller en textindatakontroll med namnet TextInput1. Användaren anger värden i den här kontrollen som ska lagras i en databas.

Användaren skriver Hello world i TextInput1.

Formel Beskrivning Resultat
IsMatch( TextInput1.Text, "Hello world" ) Testar om användarens indata matchar exakt med strängen "Hello world" true
IsMatch( TextInput1.Text, "Good bye" ) Testar om användarens indata matchar exakt med strängen "Good bye" false
IsMatch( TextInput1.Text, "hello", Contains ) Testar om användarens indata innehåller ordet "hello" (skiftlägeskänsligt). false
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Testar om användarens indata innehåller ordet "hello" (skiftlägesokänsligt). true

Fördefinierade mönster

Formel Beskrivning Resultat
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit & Digit ) Matchar ett socialförsäkringsnummer i USA true
IsMatch( "joan@contoso.com", Email ) Matchar en e-postadress true
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Matchar en sekvens av siffror, en punkt och sedan noll eller flera siffror. true
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) Matchar en sekvens av siffror, en punkt och sedan noll eller flera siffror. Det finns inte någon punkt i texten, så det här mönstret matchade inte. false

Reguljära uttryck

Formel Beskrivning Resultat
IsMatch( "986", "\d+" ) Matchar ett heltal som är större än noll. true
IsMatch( "1.02", "\d+(.\d\d)?" ) Matchar ett positivt valutabelopp. Om indatan innehåller ett decimaltecken, måste indatan även innehålla 2 numeriska tecken efter decimaltecknet. Till exempel är 3.00 giltigt, men inte 3.1. true
IsMatch( "-4.95", "(-)?\d+(.\d\d)?" ) Matchar ett positivt eller ett negativt valutabelopp. Om indatan innehåller ett decimaltecken, måste indatan även innehålla 2 numeriska tecken efter decimaltecknet. true
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) Matchar ett socialförsäkringsnummer i USA. Verifierar format, typ och längd på det angivna indatafältet. Strängen som ska matcha måste bestå av 3 numeriska tecken följt av ett tankstreck, sedan 2 numeriska tecken följt av ett tankstreck och slutligen 4 numeriska tecken. true
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Samma som i föregående exempel, men ett av bindestrecken ligger på fel plats i indatan. false
IsMatch( "weakpassword", "(?!^[0-9]$)(?!^[a-zA-Z]$)([a-zA-Z0-9]{8,10})" ) Verifierar ett starkt lösenord som måste innehålla 8, 9 eller 10 tecken, samt minst en siffra och minst ett alfabetiskt tecken. Strängen får inte innehålla några specialtecken. false
IsMatch( "http://microsoft.com", "(ht|f)tp(s?):\/\/[0-9a-zA-Z]([-.\w][0-9a-zA-Z])(:(0-9))(\/?)([a-zA-Z0-9-.\?\,\'\/\+&%\$#_]*)?" ) Verifierar http-, https- eller ftp-webbadresser. true