Regex Cheat Sheet

Emma Wedekind ✨ on February 19, 2019

A regular expression, or 'regex', is used to match parts of a string. Below is my cheat sheet for creating regular expressions. Testing a regex... [Read Full]
markdown guide
 

I go cross-eyed dealing with regex, but this is an excellent reference I'm definitely coming back to. I almost always head to regex101.com whenever pattern-matching starts to devour my brain.

 

Just shared the link to regex101 with my colleagues today - great tool!

 
 

Using the | operator is a dangerous habit. You easily forget to guard yourself against matching substrings, for example consider the following line:

const isLocalHost = /127.0.0.1|localhost/.test(location.host);

And now what happens on localhost.mydevious.url? The secure solution is to use ^ and $ to gate the start and end of the tested string.

Also, one trick up JS regex's sleeve is the back reference (\1-\9):

/(["'])(.*?)\1/.test('"I can match Emma\'s full strings"') && RegExp.$2;
/(["'])(.*?)\1/.test("'I can match when Emma say \"things in strings\"'") && RegExp.$2;

This will re-use the (matches) inside the same regex.

 

The real guard is to write tests to assert the correct behaviour :)

 
 
 

For me, Regex and Perl are write-only languages. I can't debug, edit or even read regex – I just rewrite it from scratch with some tool like RegExr or something. For me, a person who can memorise all that syntax is definitely a superhuman.

 

Making code readable is half the job of the coder. It's also true for regexes, which means you have to look for ways to separate parts and comment your regexes (or at least name the groups).

Fortunately, you can find solutions in most languages. Here are two examples from some of my OS codes:

In Javascript:

    cmdArgRegex = miaou.lib("rex")`
            ([a-z ]*)                        // options (optional)
            (-?\d*\s*d\s*[\d+-]+)            // left rolldef (mandatory)
            (?:                              // inequation (optional)
                    \s*
                    ([<>=]+)                 // operator
                    \s*
                    ([\w+-]+)                // right rolldef or scalar
            )?
            \s*$
            /i`;

(I think there are JS libs to do that without taking my code, now)

In rust:

        static ref RE: Regex = Regex::new(
            r"(?x)
            ^
            (?P<slash_before>/)?
            (?P<pattern>[^\s/:]+)?
            (?:/(?P<regex_flags>\w*))?
            (?:[\s:]+(?P<verb>\S*))?
            $
            "

(this is the standard way in this language)

 

The funny thing about these Regex cheat cheets is no matter how many of them I put in my bookmarks, I never end up using them.

 
 

I tend to not bother learning regex, the cases where it's useful, I'll just go to a site like regexr.com and then use their tools to build one.

 

In think that's the general consensus. I only use it occasionally so it's not worth my time to be 100 percent fluent.

 

I'm using regex debuger, regexbuddy.com/, to debug different regex flavors. It saved me a lot of time over the years. It can also run on linux (using Wine).
They also have a tool for building regexps, regexmagic.com/, but I'm not using is so I'm just saying it is out there.

 
 

Oh my, I wish that I had encountered this post about two months ago before I began the difficult journey of acquiring what (little) regex knowledge I have now... haha!

I'm absolutely going to be bookmarking this to revisit next time I have the need and will be sharing it with my team. You've laid this out in a very understandable way; thanks for sharing :)

 
 

Thx a lot for this awesome cheat sheet !
You made a mistake in this case

const regexWithLetterAndNumberRange = /[a-z0-9]/ig;
const testString = "Emma19382";
testString.match(regexWithLetterAndNumberRange) // true

The result of match is // ["E", "m", "m", "a", "1", "9", "3", "8", "2"] ;)

 

Great cheat sheet, thank you Emma! Soon I'm gonna make a post about this extension I made for VSCode that could help understanding RegExp: marketplace.visualstudio.com/items...

 

Great post and doubles as a great practice assessment if you hide all of the code blocks!

 
 
 

Thanks, this makes regex less scary! Keep up the good work

 
 

Nicely done :)

Always choose carefully when choosing to use a regular expression of course. Our primary application at work is for input validation, drawing heavily on the excellent work done in OWASP: owasp.org/index.php/OWASP_Validati...

 
 
 

Never ever did i wrote single regex without some kind of cheatsheet or tool. Thank you.

 
 
 
 

I've mostly used .test, but you make good use of the .match method. Thanks for the great regex post with a JavaScript focus!

 

Thanks emma for the list, will share it in our JavaScript topics.

 

Cannot get enough of these :D... because regex is something that I have to lookup no matter how many times I use it.

 
 

There are definitely some regex wizards out there, great work putting this together. 😁

 
 
 
 
 

Finally I understand hoe regular expressions works

 

I love this, and what I really love is that you used super great and clear variable names!

 

Thanks for that aweseome post. Definitly worth to be bookmarked :-)

One hint: The commented output of "Match specific numbers and letters" is wrong.

 

Can anyone help me in writting regex for accepting google.com, yahoo.com, youtube.com but not sites.google.com translate.google.com m.youtube.com admin.yahoo.com etc

 
 
 
 

This is possibly the most save-worth article on all of dev.to. Definitely a must have resource, thank you so much!

code of conduct - report abuse