Jaa


IsMatch-, Match- ja MatchAll-funktio

Koskee seuraavia: Pohjaan perustuvat sovellukset Mallipohjaisten sovellusten Power Pages Power Platform CLI

Testaa vastaavuutta tai poimii tekstimerkkijonon osat kaavan perusteella.

Kuvaus

IsMatch-funktio testaa, vastaako merkkijono hakuarvoa, joka voi koostua normaaleista merkeistä, esimääritetyistä malleista tai säännönmukaisesta lausekkeesta. Match- ja MatchAll-funktiot palauttavat kohdistetun kohteen, mukaan lukien alivastineet.

Käytä IsMatch-funktiota vahvistamaan käyttäjän Text input-ohjausobjektiin syöttämä sisältö. Voit esimerkiksi vahvistaa, onko käyttäjä syöttänyt kelvollisen sähköpostiosoitteen, ennen kuin tulokset tallennetaan tietolähteeseesi. Jos tietue ei vastaa kriteereitäsi, lisää muita ohjausobjekteja, jotka kehottavat käyttäjää korjaamaan sen.

Voit purkaa ensimmäisen vastaavan tekstimerkkijonon Match- ja kaikki vastaavat tekstimerkkijonot MatchAll-menetelmällä. Voit myös poimia alivastaavuuksia monimutkaisten merkkijonojen jäsentämiseksi.

Match palauttaa tietueen ensimmäiselle löydetylle osumalle ja MatchAll palauttaa tietuetaulukon jokaiselle löydetylle osumalle. Tietue tai tietueet sisältävät seuraavat tiedot:

Column Type Description
nimetty aliottelu tai aliosumat Viesti Kullakin nimetyllä alivastaavuudella on oma sarakkeensa. Luo nimetty alivastine käyttämällä (?<name>...) säännönmukaisessa lausekkeessa. Jos nimetyn alivastineen nimi on sama kuin jokin esimääritetyistä sarakkeista (alla), alivastine on ensisijainen ja järjestelmä luo varoituksen. Voit välttää tämän varoituksen nimeämällä alivastineen uudelleen.
FullMatch Teksti Koko vastaavuuksien tekstimerkkijono.
StartMatch Luku Vastineen aloitus kohta syötetekstimerkkijonossa. Merkkijonon ensimmäinen merkki palauttaa 1.
Osaottelut Yksisarakkeinen Teksti-taulukko (sarake Value) Taulukko nimetyistä ja nimeämättömistä alivastineista siinä järjestyksessa, jossa ne näkyvät säännönmukaisessa lausekkeessa. Yleensä nimetyt alivastaavuudet on helpompi käsitellä ja niitä kannustetaan käyttämään. Käytä ForAll-funktiota tai Last( FirstN( ... ) )-funktioita työstääksesi yksittäistä alivastaavuutta. Jos säännöllisessä lausekkeessa ei ole määritetty alivastaavuuksia, tämä taulukko on tyhjä.

Nämä toiminnot tukevat MatchOptions-toimintoa. Oletusarvoisesti:

  • Nämä toiminnot suorittavat kirjainkoon mukaisen vastaavuuden. Käytä MatchOptions.IgnoreCase-toimintoa, kun haluat suorittaa kirjainkoon mukaiset vastaavuudet.
  • IsMatch vastaa koko tekstimerkkijonoa (Complete MatchOption), kun taas Match ja MatchAll etsivät vastinetta mistä tahansa tekstimerkkijonon kohdasta (sisältää MatchOption). Käytä Complete-, Contains-, BeginsWith- tai EndsWith-määritteitä tarpeen mukaan.

IsMatch palauttaa arvon tosi , jos tekstimerkkijono vastaa kuviota, tai arvon epätosi , jos se ei vastaa kuviota. Vastine palauttaa tyhjän , jos IsBlank-funktiolla testattavaa vastinetta ei löydy. MatchAll palauttaa tyhjän taulukon, jos IsEmpty-funktiolla testattavaa vastinetta ei löydy.

Jos käytät MatchAll-funktiota tekstimerkkijonon jakamiseen, harkitse Split- funktion käyttämistä, mikä on yksinkertaisempaa ja nopeampaa.

Mallit

Näiden funktioiden käytössä on tärkeää kuvailla malli, johon syötettä verrataan. Malli kuvaillaan merkkijonona, joka voi sisältää yhdistelmän seuraavia:

  • Tavalliset merkit, kuten "abc" tai "123".
  • Esimääritetyt mallit, kuten Letter, MultipleDigits tai Email. (Match-luettelointi määrittelee nämä mallit.)
  • Säännöllisen lausekkeen koodit, kuten "\d+\s+\d+" tai "[a-z]+".

Yhdistä näitä elementtejä käyttämällä merkkijonon yhdistämisoperaattoria &. Esimerkiksi "abc" & Digit & "\s+" on kelvollinen kaava, joka vastaa merkkijonoa, jonka alussa on "a", "b" tai "c", jonka jälkeen on numero väliltä 0–9 ja sitten vähintään yksi välilyöntimerkki.

Tavalliset merkit

Yksinkertaisin malli on sarja tavallisia merkkejä, joille haetaan täyttä vastaavuutta.

Jos esimerkiksi käytetään IsMatch-funktion kanssa, merkkijono "Hello" vastaa mallia "Hello" täsmälleen. Ei enempää tai vähempää. Merkkijono hello! ei vastaa mallia lopussa olevan huutomerkin ja h-kirjaimen väärän kirjainkoon vuoksi. (Katso kohdasta MatchOptions tapoja tämän toiminnon muokkaamiseksi.)

Mallikielessä tietyt merkit on varattu erityistoimintoja varten. Jos haluat käyttää näitä merkkejä mallissa, lisää merkin vasemmalle puolelle \ (kenoviiva) ilmaisemaan, että merkki tulee tulkita kirjaimellisesti tai käytä yhtä esimääritetyistä malleista (esitetty myöhemmin tässä aiheessa). Erikoismerkit on lueteltu tässä taulukossa:

Erikoismerkki Kuvaus
. piste
? kysymysmerkki
* tähti
+ plus
( ) sulkeet
[ ] hakasulkeet
{ } kaarisulkeet
^ sirkumfleksi
$ dollarimerkki
| pystyviiva tai putkimerkki
\ kenoviiva

Esimerkiksi Hello?-vastine voidaan löytää käyttämällä mallia Hello\?, jossa kenoviiva on ennen kysymysmerkkiä.

Esimääritetyt mallit

Esimääritettyjen mallien avulla voidaan yksinkertaisesti etsiä vastaavuuksia joko yhdelle merkkijoukon merkeistä tai usean merkin sarjalle. Käytä merkkijonon yhdistämisoperaattoria &omien merkkijonojen yhdistämiseksi Match-luetteloinnin jäsenten kanssa:

Match-luettelointi Kuvaus Säännöllinen lauseke
Mikä tahansa Vastaa mitä tahansa merkkiä. .
Pilkku Vastaa pilkkua. ,
Sormi Vastaa yhtä numeroa (0–9). \d
Sähköposti Vastaa sähköpostiosoitetta, joka sisältää at-merkin (@) ja toimialuenimen, joka sisältää pisteen (.) .+\@.+\\.[^\\.]{2,}
Tavuviiva Vastaa yhdysmerkkiä. \-
Vasen Paren Vastaa vasenta suljetta ”(”. \(
Kirje Vastaa kirjainta. \p{L}
Useita numeroita Vastaa yhtä tai useampaa numeroa. \d+
Useita kirjaimia Vastaa yhtä tai useampaa kirjainta. \p{L}+
Useita NonSpace-tiloja Vastaa yhtä tai useampaa merkkiä, joka ei ole välilyöntimerkki (ei välilyönti, sarkain tai uusi rivi). \S+
Useita tiloja Vastaa yhtä tai useampaa välilyöntimerkkiä (välilyönti, sarkain tai uusi rivi). \s+
Ei-avaruus Vastaa yhtä merkkiä, joka ei ole välilyöntimerkki. \S
Valinnaiset numerot Vastaa nollaa, yhtä tai useampaa merkkiä. \d*
Valinnaiset kirjeet Vastaa nollaa, yhtä tai useampaa kirjainta. \p{L}*
ValinnaisetNonSpaces-välilyönnit Vastaa nollaa, yhtä tai useampaa merkkiä, jotka eivät ole välilyöntimerkkejä. \S*
Valinnaiset välilyönnit Vastaa nollaa, yhtä tai useampaa välilyöntimerkkiä. \s*
Jakso Vastaa pistettä (”.”). \.
RightParen Vastaa oikeaa suljetta ”)”. \)
Avaruus Vastaa välilyöntimerkkiä. \s
Piikki Vastaa sarkainmerkkiä. \t

Esimerkiksi malli "A" & MultipleDigits vastaa kirjainta ”A”, jonka jälkeen esiintyy yksi tai useampi numero.

Säännönmukaiset lausekkeet

Näiden funktioiden käyttmä malli on säännöllinen lauseke. Yllä kuvatut tavalliset merkit ja esimääritetyt mallit (kuvattu aiemmin tässä aiheessa) auttavat rakentamaan säännönmukaisen lausekkeen.

Säännönmukaiset lausekkeet ovat hyvin tehokkaita, ne ovat saatavilla useissa ohjelmointikielissä ja niitä käytetään useisiin eri tarkoituksiin. Ne voivat myös usein näyttää sattumanvaraiselta välimerkkien jonolta. Tässä artikkelissa ei kuvailla kaikkia säännönmukaisten lausekkeiden ominaisuuksia, mutta verkossa on saatavilla suuri määrä tietoja, oppaita ja työkaluja.

Säännönmukaisille lausekkeille on eri kielioppivaihtoehtoja. Power Apps käyttää JavaScript-kieliopin muunnelmaa. Syntaksin esittely on artikkelissa säännönmukaisen lausekkeen syntaksi. Nimettyjä alivastaavuuksia (kutsutaan joskus nimiksi sieppausryhmiksi) tuetaan:

  • Nimetyt alivastaavuudet: (?<name> ...)
  • Nimetyt taustaviittaukset: \k<name>

Aiemmin tässä aiheessa Match-luettelointi-taulukossa kukin luettelointi näkyy samalla rivillä kuin sitä vastaava säännöllinen lauseke.

Vastaavuusvalinnat

Voit muokata näiden funktioiden toimintaa määrittämällä yhden tai useamman valinnan, joita voidaan yhdistellä käyttämällä merkkijonon yhdistämisoperaattoria (&).

MatchOptions-luettelointi Description Vaikutus säännönmukaiseen lausekkeeseen
MatchOptions.BeginsWith Mallin on vastattava tekstin alkua. Lisää säännönmukaisen lausekkeen alkuun ^-merkin.
MatchOptions.Complete IsMatch-oletusarvo. Tämän mallin täytyy vastata koko tekstimerkkijonoa alusta loppuun. Lisää säännönmukaisen merkkijonon alkuun ^-merkin ja loppuun $-merkin.
MatchOptions.Sisältää Match- ja MatchAll-oletusarvo. Tämän mallin täytyy olla jossakin kohdassa tekstiä mutta sen ei tarvitse olla alussa tai lopussa. Ei muokkaa säännönmukaista lauseketta.
MatchOptions.EndsWith Mallin on vastattava tekstimerkkijonon loppua. Lisää säännönmukaisen lausekkeen loppuun $-merkin.
MatchOptions.IgnoreCase Käsittelee isoja ja pieniä kirjaimia identtisinä. Oletuksena vastaavuuksissa kirjainkoko on merkitsevä. Ei muokkaa säännönmukaista lauseketta. Tämä vaihtoehto vastaa säännöllisten lausekkeiden i-vakiomääritettä.
MatchOptions.Multiline Etsii vastaavuutta useilta riveiltä. Ei muokkaa säännönmukaista lauseketta. Tämä vaihtoehto vastaa säännöllisten lausekkeiden m-vakiomääritettä.

MatchAll-menetelmän käyttäminen vastaa säännönmukaisten lausekkeiden vakiotyyppistä g-määritettä.

Syntaksi

IsMatch(Teksti,Kuvio [, Asetukset ])

  • Teksti – Pakollinen. Testattava merkkijono.
  • Kuvio – Pakollinen. Testattava malli merkkijonona. Yhdistele Match-luetteloinnin määrittelemiä malleja tai anna säännönmukainen lauseke. Kuvion on oltava vakiokaava, jossa ei ole muuttujia, tietolähteitä tai muita dynaamisia viittauksia, jotka muuttuvat sovelluksen suorittamisen aikana.
  • Asetukset – Valinnainen. Merkkijonoyhdistelmä MatchOptions-luetteloinnin arvoista. Oletuksena käytetään valintaa MatchOptions.Complete.

Vastine( teksti,kuvio [, asetukset ])

  • Teksti – Pakollinen. Vastaavuukisen suhteen testattava merkkijono.
  • Kuvio – Pakollinen. Vastaavuuden malli merkkijonona. Yhdistele Match-luetteloinnin määrittelemiä malleja tai anna säännönmukainen lauseke. Kuvion on oltava vakiokaava, jossa ei ole muuttujia, tietolähteitä tai muita dynaamisia viittauksia, jotka muuttuvat sovelluksen suorittamisen aikana.
  • Asetukset – Valinnainen. Merkkijonoyhdistelmä MatchOptions-luetteloinnin arvoista. Oletuksena käytetään valintaa MatchOptions.Contains.

MatchAll( Teksti,Kuvio [, Asetukset ])

  • Teksti – Pakollinen. Vastaavuukisen suhteen testattava merkkijono.
  • Kuvio – Pakollinen. Vastaavuuden malli merkkijonona. Yhdistele Match-luetteloinnin määrittelemiä malleja tai anna säännönmukainen lauseke. Kuvion on oltava vakiokaava, jossa ei ole muuttujia, tietolähteitä tai muita dynaamisia viittauksia, jotka muuttuvat sovelluksen suorittamisen aikana.
  • Asetukset – Valinnainen. Merkkijonoyhdistelmä MatchOptions-luetteloinnin arvoista. Oletuksena käytetään valintaa MatchOptions.Contains.

IsMatch-esimerkkejä

Tavalliset merkit

Kuvitellaan, että sovelluksesi sisältää Text input-ohjausobjektin nimeltä TextInput1. Käyttäjä syöttää tähän ohjausobjektiin arvoja, jotka tallennetaan tietokantaan.

Käyttäjä kirjoittaa TextInput1-kohtaan Hello world.

Kaava Kuvaus Tulos
IsMatch( TextInput1.Text, "Hello world" ) Testaa, vastaako käyttäjän syöte tarkalleen merkkijonoa "Hello world". tosi
IsMatch( TextInput1.Text, "Good bye" ) Testaa, vastaako käyttäjän syöte tarkalleen merkkijonoa "Good bye". väärä
IsMatch( TextInput1.Text, "hello", Contains ) Testaa, sisältääkö käyttäjän syöte sanan ”hello” (kirjainkoko on merkityksellinen). väärä
IsMatch( TextInput1.Text, "hello", Contains & IgnoreCase ) Testaa, sisältääkö käyttäjän syöte sanan ”hello” (kirjainkoko ei ole merkityksellinen). tosi

Esimääritetyt mallit

Kaava Kuvaus Tulos
IsMatch( "123-45-7890", Digit & Digit & Digit & Hyphen & Digit & Digit & Hyphen & Digit & Digit & Digit & Digit ) Vastaa Yhdysvaltojen sosiaaliturvatunnusta tosi
IsMatch( "joan@contoso.com", Email ) Vastaa sähköpostiosoitetta tosi
IsMatch( "123.456", MultipleDigits & Period & OptionalDigits ) Vastaa, kun kyseessä on numerojono, jonka jälkeen on piste ja sitten nolla tai useampia numeroita. tosi
IsMatch( "123", MultipleDigits & Period & OptionalDigits ) Vastaa, kun kyseessä on numerojono, jonka jälkeen on piste ja sitten nolla tai useampia numeroita. Vastaavuustekstissä ei ole pistettä, joten tälle mallille ei löydy vastaavuutta. väärä

Säännönmukaiset lausekkeet

Kaava Kuvaus Tulos
IsMatch( "986", "\d+" ) Vastaa kokonaislukua, joka on suurempi kuin nolla. tosi
IsMatch( "1.02", "\d+(\.\d\d)?" ) Vastaa positiivista valuuttasummaa. Jos syöte sisältää desimaalierottimen, syötteen täytyy myös sisältää kaksi numeroa sen jälkeen. Esimerkiksi 3.00 on kelvollinen, mutta 3.1 ei. tosi
IsMatch( "-4.95", "(-)?\d+(\.\d\d)?" ) Vastaa positiivista tai negatiivista valuuttasummaa. Jos syöte sisältää desimaalierottimen, syötteen täytyy myös sisältää kaksi numeroa sen jälkeen. tosi
IsMatch( "111-11-1111", "\d{3}-\d{2}-\d{4}" ) Vastaa Yhdysvaltojen sosiaaliturvatunnusta. Vahvistaa annetun syötekentän muodon, tyypin ja pituuden. Vastattavan merkkijonon täytyy sisältää kolme numeroa, joiden perässä on viiva, sitten kaksi numeroa, viiva ja neljä numeroa. tosi
IsMatch( "111-111-111", "\d{3}-\d{2}-\d{4}" ) Sama kuin edellisessä esimerkissä, mutta yksi syötteen viiva on väärässä paikassa. väärä
IsMatch( "AStrongPasswordNot", "(?!^[0-9]\*$)(?!^[a-zA-Z]\*$)([a-zA-Z0-9]{8,10})" ) Vahvistaa vahvan salasanan, jonka täytyy sisältää kahdeksan, yhdeksän tai 10 merkkiä sekä vähintään yhden numeron ja yhden kirjaimen. Merkkijono ei saa sisältää erikoismerkkejä. väärä

Match- ja MatchAll-esimerkkejä

Kaava Kuvaus Tulos
Match( "Bob Jones <bob.jones@contoso.com>", "<(?<email>" & Match.Email & ")>" Poimii vain yhteyshenkilön tietojen sähköpostiosan. {
email: "bob.jones@contoso.com",
FullMatch: "<bob.jones@contoso.com>",
SubMatches: [ "bob.jones@contoso.com" ],
StartMatch: 11
}
Match( "Bob Jones <InvalidEmailAddress>", "<(?<email>" & Match.Email & ")>" Poimii vain yhteyshenkilön tietojen sähköpostiosan. Kelvollista osoitetta ei löydy (@-merkkejä ei ole), joten funktio palauttaa blank. aihio
Match( Language(), "(<language>\w{2})(?:-(?<script>\w{4}))?(?:-(?<region>\w{2}))?" ) Poimii kielen, komentosarjan ja alueen kielitunnisteesta, jonka Language-funktio palauttaa. Tulokset vastaavat Yhdysvaltoja. Lisää esimerkkejä on Language-toiminnon dokumentaatiossa. Operaattori (?: ryhmittelee merkkejä luomatta toista alivastaavuutta. {
language: "en",
script: blank,
region: "US",
FullMatch: "en-US",
SubMatches: [ "en", "", "US" ],
StartMatch: 1
}
Match( "PT2H1M39S", "PT(?:<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ) Poimii tunnit, minuutit ja sekunnit ISO 8601 -aikakestoarvosta. Puretut luvut ovat yhä tekstimerkkijonossa. Muunna se Value-funktiolla numeroksi ennen matemaattisten työvaiheiden suorittamista. {
hours: "2",
minutes: "1",
seconds: "39",
FullMatch: "PT2H1M39S",
SubMatches:["2","1","39"],
StartMatch: 1
}

Syvennytään viimeiseen esimerkkiin. Jos haluat muuntaa tämän merkkijonon päivämäärä- ja aika-arvoksi käyttämällä Time-funktiota, sinun on välitettävä nimetyt alivastaavuudet yksitellen. Voit tehdä tämän käyttämällä With-toimintoa, joka toimii Match-funktion palauttamalle tietueelle:

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
   Time( Value( hours ), Value( minutes ), Value( seconds ) )
)

Voit lisätä näihin esimerkkeihin Button-ohjausobjektin, määrittää sen OnSelect-ominaisuuden tähän kaavaan ja valita sitten painikkeen:

Set( pangram, "The quick brown fox jumps over the lazy dog." )
Kaava Kuvaus Tulos
Match( pangram, "THE", IgnoreCase ) Etsi kaikki "THE"-vastaavuudet pangram-muuttujan sisältämästä tekstimerkkijonosta. Merkkijonossa on kaksi vastaavuutta, mutta vain ensimmäinen palautetaan, koska käytät Match- etkä MatchAll-funktiota. SubMatches-sarake on tyhjä, koska alivastaavuuksia ei määritetty. {
FullMatch: "The",
SubMatches: [ ],
StartMatch: 32
}
MatchAll( pangram, "the" ) Etsi kaikki "the"-vastaavuudet pangram-muuttujan sisältämästä tekstimerkkijonosta. Testissä kirjainkoolla on merkitystä, joten vain toinen "the"-ilmentymä löytyy. SubMatches-sarake on tyhjä, koska alivastaavuuksia ei määritetty. MatchAll pangrammiin.
MatchAll( pangram, "the", IgnoreCase ) Etsi kaikki "the"-vastaavuudet pangram-muuttujan sisältämästä tekstimerkkijonosta. Tässä tapauksessa testissä ei oteta huomioon kirjainkokoa, joten sanan molemmat esiintymät löytyvät. SubMatches-sarake on tyhjä, koska alivastaavuuksia ei määritetty. MatchAll IgnoreCasen kanssa.
MatchAll( pangram, "\b\wo\w\b" ) Etsii kaikki kolmikirjaimiset sanat, joiden keskellä on "o". Huomaa, että "brown" jätetään pois, koska se ei ole kolmikirjaiminen sana, joten se ei vastaa kaavaa "\b" (sanan raja). MatchAll pangrammiin b-, wo-, w- ja b-vastineille.
Match( pangram, "\b\wo\w\b\s\*(?<between>\w.+\w)\s\*\b\wo\w\b" ) Vastaa kaikkia merkkejä kohtien "fox" ja "dog" välillä. {
between: "jumps over the lazy",
FullMatch: "fox jumps over the lazy dog",
SubMatches: [ "jumps over the lazy" ],
StartMatch: 17
}

Voit tarkastella MatchAll-tuloksia galleriassa seuraavasti:

  1. Lisää tyhjässä näytössä tyhjä pystysuora Gallery-ohjausobjekti.

  2. Määritä gallerian Items-ominaisuudeksi MatchAll( pangram, "\w+" ) tai MatchAll( pangram, MultipleLetters ).

    Kohteiden valikoima.

  3. Valitse valikoiman malli valitsemalla gallerian keskeltä "Lisää kohde Lisää-välilehdeltä".

  4. Lisää valikoiman mallipohjaan Label-ohjausobjekti.

  5. Määritä selitteen Text-ominaisuudeksi ThisItem.FullMatch.

    Galleria täytetään esimerkkitekstin jokaisella sanalla. Muuta gallerian mallin ja Selite-ohjausobjektin kokoa, jotta näet kaikki sanat yhdessä näytössä.

    Text-ominaisuus.