Hemsida » Kodning » Beginners Guide to Regular Expression (Regex)

    Beginners Guide to Regular Expression (Regex)

    Ett vanligt uttryck är en uppsättning tecken som bildar ett mönster som kan sökas i en sträng. Regex kan användas för godkännande till exempel att validera kreditkortsnummer, för Sök dvs via komplexa text matchningar, och för ersätter matchad text med en annan sträng. Det har också bra stöd för flera språk - lära dig det en gång och du kan använda det på många programmeringsspråk.

    Jag har sett få personer ta en första titt på regex och ignorera det helt. Jag skyller inte på dem regex syntax är komplex och kommer att göra många cringe, precis som de kommandoradsspråken, bara värre. Men då är varje ny sak läskigt och verkar omöjligt att lära sig först. Så, låter Horatius ord jag säger detta; Börja, vara djärv och våga vara klok.

    Om Regex

    Regex hade sina rötter inom neurovetenskap och matematik och genomfördes endast i programmering 1968 av Ken Thompson i QED textredigerare för textsökning. Nu är det en del av många programmeringsspråk som Perl, Java, Python, Ruby och JavaScript.

    Låt oss titta på några exempel på hur regex fungerar.

    Jag använder JavaScript i mina exempel. Nu, för att passera nybörjarnivå måste du lära dig allt tecken, klasser, kvantifierare, modifierare och metoder används i regex. Här är en länk till Mozilla Developer Networks Regular Expression-sida där du kan se en tabell som innehåller alla dessa. Du kan också referera till cheatsheet i slutet av det här inlägget med de mest använda tecknen.

    Låt oss se ett enkelt exempel med en förklaring. Detta är en regex.

    Detta är vad ovanstående regex söker efter i en rad, ett tecken "B" följt av åtminstone en av alla tecken mellan (och inklusive) 'a' till 'z', 'A' till 'Z' och nummer 0 till 9.

    Här är ett urval av träffar i en linje markerad:

    Korg, Glödlampa, B12 vitamin, BaSO4, N före Kristus företag

    Ovanstående regex stoppar sökningen på Korg och returnera ett positivt svar. Det är för att den globala modifieraren "g"måste anges om du vill att regex ska titta på alla möjliga matcher.

    Nu, låt oss se hur du använder detta uttryck i JavaScript. De testa Metoden går: om det hittades en matchavkastning Sann, annan falsk.

     var input = "din teststräng", regex = / B [a-zA-Z \ d] + /; om (! regex.test (input)) alert ('Ingen matchning hittades'); annars varning ('En matchning hittades');

    Låt oss försöka med en annan metod: match returnerar matchningarna som hittades i en array.

     var input = "din teststräng", regex = / B [a-zA-Z \ d] + / g, / * Jag har lagt till den globala modifieraren 'g' till regex för att få alla matcherna * / ary = input.match (regex); om (ary === null) alert ('Ingen matchning hittades'); annars alert ('matcher är:' + ary.toString ());

    Vad sägs om sträng byta ut? Låt oss försöka med regex nu.

     var input = "din teststräng", regex = / B [a-zA-Z \ d] + / g; varning (input.replace (regex, "#"));

    Nedan är en kodpenna för dig att tweak. Klicka på fliken "JavaScript" för att visa JS-koden.

    övningar

    För övningar kan du google “regex övningar” och försök att lösa dem. Här är vad man kan förvänta sig när man försöker utföra dessa övningar, enligt svårighetsgrader.

    Grundläggande

    För mig att kunna validera ett lösenord är tillräckligt för att börja. Så, verifiera ett lösenord för 8 till 16 teckenlängd, alfanumerisk med ditt val av specialtecken tillåtna.

    Mellanliggande

    Här ska du öva med mer verkliga världsdata och lära dig några fler regexpoäng lookahead, lookbehind påståenden och matchande grupper;

    • Bekräfta PIN-koder, hexadecimaler, datum, e-post-ID, flytpunkt.
    • Ersätt efterföljande noll, blankor, en uppsättning matchande ord
    • Extrahera olika delar av en URL

    Avancerad

    Du kan optimera ovanstående övningar lösningar - den mest optimala regex för e-post har tusentals tecken i det - så ta det så långt som du känner dig bekväm och det räcker. Du kan också försöka:

    • Parsing HTML eller XML (även om det är riktigt i den verkliga världen, är det avskräckt att göra det eftersom att använda regelbundet uttryck för att tolka icke-vanligt språk som HTML kommer aldrig att göra det idiotiskt. Plus XML-parsning är en svår uppgift, mer lämplig för avancerade användare)
    • Byta taggar
    • Ta bort kommentarer (förutom IE villkorliga kommentarer)

    Verktyg

    Verktyg till visualisera regex är en av de coolaste sakerna där ute för mig. Om du någonsin kommer över en lång komplex regex, klistra in dem bara i ett av de här verktygen och du kommer att kunna se flödet tydligt. Dessutom finns det många verktyg som du kan använda för att fiska med regex-koden. De visar också exempel och cheatsheets tillsammans med delfunktioner.

    • Debuggex - Det drar ett regexdiagram enligt din inmatning och du kan göra en snabb delning till StackOverflow direkt därifrån.
    • RegExr - Du kan testa din regex med den här. Det har också referens, ett cheatsheet och exempel för att hjälpa dig.
    • Förfyllning - För närvarande, förutom JavaScript, kan du också lura med Ruby och .NET versioner av regex i det.

    Regex Cheatsheet

    Tecken Definition
    [abc] Varje enskilt tecken a, b eller c
    [^ Abc] Alla tecken än a, b eller c
    [A-z] Tecken mellan (inklusive) a till z
    [^ A-z] Tecken förutom från a till z
    [A-Z] Tecken mellan (inklusive) A till Z
    . Alla enskilda tecken
    \ s Vilken whitespace-karaktär
    \ S Vilken som helst icke-mellanslagstyp
    \ d Varje siffra 0 till 9
    \ D Alla icke-siffra
    \ w Alla ord karaktär (bokstav, nummer och understrykning)
    \ W Eventuella ord som inte är ord
    (...) Fånga allt bifogat
    (A | b) Matcha antingen a eller b
    en? Tecken a är antingen frånvarande eller närvarande en gång
    en* Tecken a är antingen frånvarande eller närvarande flera gånger
    en+ Tecken a är närvarande en eller flera gånger
    en 3 3 förekommande tecken i följd
    en 3, 3 eller fler förekomster av tecken i följd
    a 3,6 3 till 6 händelser av karaktär i följd
    ^ Start av sträng
    $ Slut på strängen
    \ b Ett ordgräns. Om ett tecken är ett ords sista eller första ordtecken eller Om ett tecken är mellan ett ord eller ett ordtyp
    \ B Icke-ordgräns

    Läs nu: Vanliga uttryck: 30 Användbara verktyg och resurser