Startpagina » Coding » 30 Handige Regex-codefragmenten voor webontwikkelaars

    30 Handige Regex-codefragmenten voor webontwikkelaars

    Reguliere expressies zijn een krachtig hulpmiddel dat zich in de gereedschapsriem van elke ontwikkelaar zou moeten bevinden. Ze kunnen overeenkomen met een reeks tekens op basis van zeer complexe parameters, waardoor u veel tijd kunt besparen bij het bouwen van dynamische websites.

    Webontwikkelaars worden geconfronteerd met verschillende taken dan softwareontwikkelaars, maar veel van dezelfde codefundamentals blijven bestaan. Reguliere expressies (of regex) hebben een steile initiële leercurve, maar dat kunnen ze zijn enorm krachtig wanneer correct gebruikt.

    Het lastigste deel is het leren van de syntaxis en leren hoe je vanuit het niets je eigen regex-code kunt schrijven. Om tijd te besparen heb ik 30 verschillende regex-codefragmenten georganiseerd die u kunt opnemen in ontwikkelingsprojecten. En omdat regex niet beperkt is tot één taal, kunt u deze fragmenten op alles toepassen JavaScript naar PHP of Python.

    1. Wachtwoordsterkte

    ^ (? =. * [AZ]. * [AZ]) (? =. * [! @ # $ & *]) (? =. * [0-9]. * [0-9]) (? = . * [az]. * [az]. * [az]). 8 $

    Het controleren van de sterkte van een wachtwoord is vaak subjectief, dus er is geen absoluut correct antwoord. Maar ik vind dat dit regex-fragment een goed beginpunt is als je niet vanuit het niets je eigen wachtwoordsterktecontrole wilt schrijven. (Bron)

    2. Hexadecimale kleur

    \ # ([a-fA-F] | [0-9]) 3, 6

    Het gebied van webontwikkeling is alomtegenwoordig met hex kleurcodes. Dit regex-fragment kan worden gebruikt om hex-code overeenkomsten van elke tekenreeks voor welk doel dan ook te verkrijgen. (Bron)

    3. Valideer het e-mailadres

    /[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]2,4/igm

    Een van de meest voorkomende taken voor een ontwikkelaar is om te controleren of een tekenreeks is opgemaakt in de stijl van een e-mailadres. Er zijn veel verschillende varianten om deze taak te volbrengen, dus deze SitePoint-link biedt twee verschillende codefragmenten voor het controleren van de e-mailsyntaxis tegen een tekenreeks. (Bron)

    4. IPv4-adres

    /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.)3 (:??? 25 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9]) \ b /

    Vergelijkbaar met een e-mailadres is het typische IP-adres dat wordt gebruikt om een ​​specifieke computer te identificeren die verbinding met internet maakt. Deze reguliere expressie controleert een tekenreeks om te zien of deze de syntaxis van het IPv4-adres volgt. (Bron)

    5. IPv6-adres

    (([0-9a-fA-F] 1,4:) 7,7 [0-9a-fA-F] 1,4 | ([0-9a-fA-F] 1 4:) 1,7: | ([0-9a-fA-F] 1,4:) 1,6: [0-9a-fA-F] 1,4 | ([0-9a-fA-F] 1,4:) 1,5 ([0-9a-fA-F] 1,4) 1,2 | ([0-9a -FA-F] 1,4:) 1,4 ([0-9a-fA-F] 1,4) 1,3 | ([0-9a-fA-F] 1,4:) 1,3 ([0-9a-fA-F] 1,4) 1,4 | ([0-9a-fA-F] 1,4 :) 1,2 ([0-9a-fA-F] 1,4) 1,5 | [0-9a-fA-F] 1,4: ((: [0 9a-fA-F] 1,4) 1,6) |: (([0-9a-fA-F] 1,4) 1,7 |:) | FE80: (: [0-9a-fA-F] 0,4) 0,4% [0-9a-zA-Z] 1 |: :( ffff (0 1,4) 0,1:) 0,1 ((25 [0-5] | (2 [0-4] | 1 0,1 [0-9]) 0,1 [0-9 ]) \) 3,3 (25 [0-5] |. (2 [0-4] | 1 0,1 [0-9]) 0,1 [0-9]) | ([0-9a-fA-F] 1,4:) 1,4: ((25 [0-5] | (2 [0-4] | 1 0,1 [0-9 ]) 0,1 [0-9]) \) 3,3 (25 [0-5] |. (2 [0-4] | 1 0,1 [0-9])  0,1 [0-9]))

    Als alternatief kunt u een adres voor de nieuwere IPv6-syntaxis controleren met dit geavanceerdere regex-fragment. Het verschil is klein, hoewel essentieel tijdens de ontwikkeling. (Bron)

    6. Duizenden scheidingsteken

    / \ D 1,3 (? = (\ D 3) + (?! \ D)) / g

    Traditionele nummeringssystemen vereisen een komma, punt of een ander teken om de drie cijfers in een groter aantal. Deze regex-code werkt op elk nummer en past elk door u gekozen cijfer toe op elk derde cijfer dat scheidt in duizenden, miljoenen, etc. (bron)

    7. Voer HTTP naar Hyperlink uit

    if (! s.match (/ ^ [a-zA-Z] +: \ / \ //)) s = 'http: //' + s; 

    Of je nu in JavaScript, Ruby of PHP werkt, deze reguliere expressie kan erg nuttig zijn. Het zal elke URL-string controleren om te zien of het een HTTP / HTTPS-voorvoegsel heeft, en zo niet, plaats het dan overeenkomstig. (Bron)

    8. Trek domein van URL

    /https?:\/\/(?:[-\w]+\.)?([-\w]+)\.\w+(?:\.\w+)?\/?.*/i

    Elk websitedomein bevat het eerste protocol (HTTP of HTTPS) en vaak een subdomein plus het extra paginapad. U kunt dit fragment gebruiken om dit alles door te snijden en alleen de domeinnaam te retourneren zonder extra franje. (bronL

    9. Sorteer Trefwoorden op Word Count

    ^ [^ \ s] * $ komt overeen met exact zoekwoord van één woord ^ [^ \ s] * \ s [^ \ s] * $ komt exact overeen met woordwoord met twee woorden ^ [^ \ s] * \ s [^ \ s] * komt overeen met trefwoorden van minimaal 2 woorden (2 en meer) ^ ([^ \ s] * \ s) 2 [^ \ s] * $ komt overeen met exact trefwoord van 3 woorden ^ ([^ \ s] * \ s ) 4 [^ \ s] * $ komt overeen met zoekwoorden van 5 woorden en meer (longtail)

    Gebruikers van Google Analytics en Webmasterhulpprogramma's zullen echt genieten van deze reguliere expressie. Het kan zoekwoorden sorteren en organiseren op basis van het aantal woorden dat in een zoekopdracht wordt gebruikt.

    Dit kan numeriek specifiek zijn (dat wil zeggen slechts 5 woorden) of het kan een reeks woorden (dat wil zeggen 2 of meer woorden) evenaren. Wanneer gebruikt om analysegegevens te sorteren, is dit één krachtige uitdrukking. (Bron)

    10. Zoek een geldige Base64-reeks in PHP

    \? php [\ t] eval \ (base64_decode \ (\ '(([A-Za-z0-9 + /] 4) * ([A-Za-z0-9 + /] 3 = | [A-Za-Z0-9 + /] 2 ==)) 1 \ '\) \) \?;

    Als je een PHP-ontwikkelaar bent, moet je op een bepaald moment de code doorspitten op zoek naar Base64-gecodeerde binaire objecten. Dit fragment kan op alle PHP-codes worden toegepast en zal controleren op bestaande Base64-reeksen. (Bron)

    11. Geldig telefoonnummer

    ^ \ +? \ d 1,3? [-.]? \ (? (?: \ d 2,3) \)? [-.]? \ d \ d \ d [-.]? \ d \ d \ d \ d $

    Kort, lief en ter zake. Deze regex-code valideert elke traditionele syntaxis van het telefoonnummer gebaseerd op de Amerikaanse stijl van telefoonnummers.

    Omdat dit een redelijk ingewikkeld onderwerp kan worden, raad ik aan deze Stack-thread af te spelen voor meer gedetailleerde antwoorden. (Bron)

    12. Leading & Trailing Whitespace

    ^ [\ s] + | [\ s] + $

    Gebruik dit codefragment om de eerste / achterste witruimte uit een tekenreeks te verwijderen. Dit is misschien geen probleem, maar soms kan het de uitvoer beïnvloeden wanneer het uit een database wordt gehaald of op een andere documentcodering wordt toegepast. (Bron)

    13. Trek afbeeldingsbron)

    \< *[img][^\>] * [src] * = * [\ "\ '] 0,1 ([^ \" \' \>] *)

    Als u om welke reden dan ook de bron van een afbeelding rechtstreeks uit HTML moet halen, is dit codefragment de perfecte oplossing. Hoewel het probleemloos kan worden uitgevoerd op de backend, moeten frontend JS-ontwikkelaars in plaats daarvan vertrouwen op de .attr () -methode van jQuery voor de frontend. (Bron)

    14. Valideer de datum in DD / MM / JJJJ-indeling

    ^ (:( ?: 31 (\ / | - |?.? \) (?: 0 [13578] | 1 [02])) | (? :( ?: 29 | 30) \ 1 (\ / | - | \) (0 ?: [1,3-9] |.? 1 [0-2]) \ 2)) (:( ?: 1 [6-9] |? [2-9] \ d)? \ d 2) $ | ^ (?: 29 (\ / | - |. \)??? 0 2 \ 3 (:( :( ?: 1 [6-9] | [2-9] \ d ) (?: 0 [48] |? [2468] [048] | [13579] [26]) | (:( ?: 16 |? [2468] [048] | [3579] [26]) 00)) )) $ | ^ (?: 0 [1-9] | 1 \ d | 2 [0-8]) (\ / | - |?.?? \) (:( ?: 0 [1-9]) | (: 1 [0-2])?) \ 4 (:( ?: 1 [6-9] | [2-9] \ d) \ d 2) $

    Datums zijn lastig omdat ze kunnen worden weergegeven als tekst + cijfers of alleen als cijfers met verschillende indelingen. PHP heeft een fantastische datumfunctie, maar dit is niet altijd de beste keuze wanneer je een onbewerkte string trekt. Overweeg in plaats daarvan deze reguliere expressie te gebruiken die is gemaakt voor deze specifieke datumsyntaxis. (Bron)

    15. YouTube-ID-overeenkomst video

    /http:\/\/(?:youtu\.be\/|(?:[az]2,3\.)?youtube\.com\/watch(?:\?|#\!)v =) ([\ w -]. 11) * / gi

    YouTube heeft jarenlang dezelfde URL-structuur behouden omdat het gewoon werkt. Het is ook de meest populaire site voor het delen van video's op het web, dus YouTube-video's hebben de neiging het meeste verkeer te genereren.

    Als je een YouTube-video-ID uit een URL moet halen, is deze regex-code perfect en zou deze perfect moeten werken voor alle varianten van YouTube-URL-structuren. (Bron)

    16. Geldig ISBN

    / \ b (?: ISBN (? ::? |))? ((?: 97 [89])? \ d 9 [\ dx]) \ b / i

    Gedrukte boeken volgen een systeem van nummering dat bekend staat als ISBN. Dit kan nogal lastig worden als je de verschillen tussen ISBN-10 en ISBN-13 overweegt.

    Met dit ongelooflijke fragment kun je echter een ISBN-nummer valideren en controleren of het ISBN10 of 13 is. Alle code is geschreven in PHP, dus dit zou bijzonder nuttig voor webontwikkelaars blijken te zijn. (Bron)

    17. Controleer de postcode

    ^ \ D 5 (?: [- \ s] \ d 4)? $

    De maker van dit fragment heeft niet alleen zijn werk gratis uitgebracht, maar hij nam ook de tijd om het uit te leggen. U vindt dit fragment nuttig, of u nu een typische 5-cijferige postcode of de langere 9-cijferige versie combineert.

    Houd in gedachten dat dit voornamelijk bedoeld is voor het Amerikaanse systeem van postcodes, dus dit kan aanpassingen in andere landen vereisen. (Bron)

    18. Geldige Twitter-gebruikersnaam

    / @ ([A-Za-Z0-9 _] 1,15) /

    Hier is een heel klein codefragment voor het matchen van Twitter-gebruikersnamen in een reeks. Het controleert voor @noemen syntaxis die perfect is voor het automatisch scannen van de inhoud van een tweet (of tweets). (Bron)

    19. Creditcardnummers

    ^ (4 ?: [0-9] 12 ([0-9] 3) | 5 [1-5] [0-9] 14 | 6 (??? 011 | 5 [ 0-9] [0-9]) [0-9] 12 | 3 [47] [0-9] 13 | 3 (? 0 [0-5] | [68] [0-9 ]) [0-9] 11 | (:? 2131 | 1800 | 35 \ d 3) \ d 11) $

    Het valideren van een creditcardnummer vereist vaak een beveiligd platform dat elders online wordt gehost. Maar regex kan worden gebruikt voor de minimale vereisten van een typisch creditcardnummer.

    Een uitgebreidere lijst met codes voor individuele kaarten vindt u hier. Dit omvat Visa, MasterCard, Discover en vele anderen. (Bron)

    20. Vind CSS-attributen

    ^ \ S * [a-zA-Z \ -] + \ s * [:] 1 \ s [. A-zA-Z0-9 \ s #] + [,] 1

    Het komt zelden voor dat we regex over CSS uitvoeren, maar het is ook geen ongelofelijke rare situatie.

    Dit codefragment kan worden gebruikt om elke overeenkomende CSS-eigenschap en -waarde uit afzonderlijke selectors te halen. Het kan om een ​​aantal redenen worden gebruikt, bijvoorbeeld om stukjes CSS te bekijken of om dubbele eigenschappen te verwijderen. (Bron)

    21. Strip HTML-opmerkingen

    Als u om welke reden dan ook alle opmerkingen uit een HTML-blok moet verwijderen, dan is dit de te gebruiken regex-code. Samen met de expressie vindt u een PHP-voorbeeld met preg_replace. (Bron)

    22. URL van het Facebook-profiel

    /(?:http:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)? (:? [\ w \ -] * \ /) * ([\ w \ -] *) /

    Facebook is ongelooflijk populair en heeft veel verschillende URL-schema's doorlopen. In een situatie waarin u profiel-URL's van gebruikers neemt, kan het handig zijn strings te ontleden en te bevestigen dat ze op de juiste manier zijn gestructureerd. Dit fragment kan precies dat doen en het is perfect voor alle links in FB-stijl. (Bron)

    23. Controleer de versie van Internet Explorer

    ^. * MSIE [5-8] (?: \. [0-9] +)? (?!. * Trident \ / [5-9] \. 0). * $

    De overstap van Microsoft naar Edge was niet unaniem en veel mensen vertrouwen nog steeds op klassieke Internet Explorer. Ontwikkelaars moeten vaak controleren op versies van IE om inconsistenties met rendering engines te verwerken.

    Dit fragment kan in JavaScript worden gebruikt om een ​​browseragent te testen op basis van welke versie van Internet Explorer (5-11) wordt gebruikt. (Bron)

    24. Prijs ophalen

    /(\$[0-9,]+(\.[0-9]2)?)/

    Prijzen zijn er in verschillende indelingen die decimalen, komma's en valutasymbolen bevatten. Deze reguliere expressie kan al deze verschillende indelingen controleren om een ​​prijs uit elke reeks te halen. (Bron)

    25. Ontleed de e-mailkoptekst

    /\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]2,6\b/i

    Met deze enkele coderegel kunt u door een e-mailheader bladeren om eruit te halen “naar” informatie uit de kop. Het kan worden gebruikt in combinatie met meerdere samengevoegde e-mails.

    Als u liever regex voor deze taak wilt vermijden, kunt u in plaats daarvan vertrouwen op een ontleedbibliotheek. (Bron)

    26. Vergelijk een bepaald type

    /^(.*\.(?!(htm|html|class|js)$))?[^.]*$/i

    Wanneer u te maken hebt met verschillende bestandsindelingen zoals .xml, .html en .js, kan het helpen om bestanden zowel lokaal als door gebruikers te controleren. Dit fragment trekt een bestandsextensie om te controleren of deze geldig is van een reeks geldige extensies die naar behoefte kunnen worden gewijzigd. (Bron)

    27. Combineer een URL-reeks

    /[-a-zA-Z0-9@:%_\+.~#?&//=]2,256\.[az]2,4\b(\/[-a-zA-Z0 -9 @:.?% _ \ + ~ # & // =] *) / gi

    Dit fragment kan zowel voor HTTPS- als voor HTTP-reeksen worden gebruikt om te controleren of de tekst overeenkomt met de traditionele syntaxis van het TLD-domein. Er is ook een eenvoudige implementatie van deze regex met RegExp van JavaScript. (Bron)

    28. Voeg rel = toe”nofollow” naar links

    (] *) (href = "https?: //) ('?! (?: (?: www \.)?'. implode ('| (?: www \.)?', $ follow_list). ') ?!.) [^ "] +)" ((* \ Brel =) [^>] *) (?: [^>] *)>

    Als u met een batch HTML-code werkt, kan het afschuwelijk zijn om handmatige arbeid toe te passen in repetitieve taken. Reguliere expressies zijn perfect voor deze gelegenheid en ze zullen heel wat tijd besparen.

    Dit fragment kan alle ankerlinks uit een HTML-blok trekken en het rel =”nofollow” attribuut aan elk element. De ontwikkelaar die deze code schreef, was zo vriendelijk om de onbewerkte uitdrukking plus een werkend voorbeeld in PHP te publiceren.

    29. Media Query Match

    / @ Media ([^] +) \ ([\ s \ S] +?) \ S * / g

    Splitsen CSS-mediaquery's op in hun parameters en eigenschappen. Dit kan u helpen om externe CSS op een schonere manier te analyseren met een meer directe focus op hoe de code werkt. (Bron)

    30. Syntaxis van Google Zoeken

    /([+-]?(?:'.+?'|".+?"|[^+\-] 1 [^] *)) / g

    U kunt uw eigen regex-code bouwen voor het manipuleren van doorzoekbare tekst met de handelsmerksyntax van Google. Het plusteken (+) geeft extra trefwoorden aan en het minteken (-) geeft woorden aan die moeten worden genegeerd en uit de resultaten moeten worden verwijderd.

    Het is een nogal gecompliceerd fragment, maar op de juiste manier gebruikt, kan het een basis bieden voor het bouwen van uw eigen zoekalgoritme. (Bron)

    Afronden

    Het pad naar mastering regex is lang, maar lonend als je eraan vasthoudt. Beyond reguliere regex-tools de beste manier om te studeren is door herhaling. Probeer webtoepassingen te bouwen die afhankelijk zijn van deze regex-fragmenten om te leren hoe ze werken in een echt werkende webapp. En als je andere fragmenten hebt om aan te bevelen dat je ze kunt plaatsen in het gedeelte met opmerkingen hieronder.

    Nu lezen:

    50 nuttige CSS-fragmenten die elke designer zou moeten hebben