DEV Community

Cover image for Regex Cheat Sheet

Regex Cheat Sheet

Emma Bostian ✨ 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...
Collapse
 
bkichler profile image
Brian Kichler •

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.

Collapse
 
richardvk profile image
Richard vK •

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

Collapse
 
vasiliib profile image
Burlacu Vasilii •

Yep, regex101 helps a lot! It even gives you the code snippet for your programming language (e.g. PHP)

Collapse
 
saul_bt profile image
Saúl Blanco Tejero •

RT

Collapse
 
lexlohr profile image
Alex Lohr •

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);
Enter fullscreen mode Exit fullscreen mode

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;
Enter fullscreen mode Exit fullscreen mode

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

Collapse
 
c24w profile image
Chris Watson •

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

Collapse
 
lexlohr profile image
Alex Lohr •

Just don't forget about those edge cases ;-)

Collapse
 
nickytonline profile image
Nick Taylor •
Collapse
 
baso53 profile image
Sebastijan Grabar •

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.

Collapse
 
colinodell profile image
Colin O'Dell •

That's why you need a regex cheat sheet mug!

Regular expression mug

Collapse
 
pflash profile image
Precious adeyinka •

sebastian 😂 me too

Collapse
 
mvoloskov profile image
Miloslav 🏳️‍🌈 🦋 Voloskov • • Edited

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.

Collapse
 
dystroy profile image
Denys Séguret • • Edited

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)

Collapse
 
georgewl profile image
George WL •

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.

Collapse
 
jacksonelfers profile image
Jackson Elfers •

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

Collapse
 
phillipdodd profile image
Phillip Dodd •

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 :)

Collapse
 
mtomasek2 profile image
mtomasek2 •

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.

Collapse
 
takumiiweb profile image
Guillaume Duchemin • • Edited

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"] ;)

Collapse
 
leo profile image
Leonardo Galante •

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...

Collapse
 
thomasjunkos profile image
Thomas Junkツ •

For the day-to_day development, I recommend using Rubular or Regexly

Collapse
 
bmaciejewicz profile image
Bartosz Maciejewicz •

I <3 it :) thank you very much :)

Collapse
 
mvasigh profile image
Mehdi Vasigh •

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

Collapse
 
plainjavascript profile image
plainJavaScript •

Pretty fine.

Collapse
 
girng profile image
I'mAHopelessDev •

very neat, thanks!

Collapse
 
darkliahos profile image
Sohail Nasir •

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

Collapse
 
mmeyers00 profile image
mmeyers00 •

Shouldn't this also go under #regex?

Collapse
 
monsterooo profile image
monsterooo •

⛄️

Collapse
 
lundeee profile image
Lundeee •

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

Collapse
 
saul_bt profile image
Saúl Blanco Tejero •

I love regexp 😊

Collapse
 
jsm91 profile image
Jesse •

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

Collapse
 
jacksonelfers profile image
Jackson Elfers •

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

Collapse
 
websiteworkshop profile image
websiteworkshop •

Thank you for making such a clear reference

Collapse
 
luispa profile image
LuisPa •

Great post Emma!

Collapse
 
jonrandy profile image
Jon Randy 🎖️ •

Best regex cheatsheet I ever came across - appletree.or.kr/quick_reference_ca...

Collapse
 
10secondsofcode profile image
Elango Sundar •

Nicely explained....!

Collapse
 
shuv1824 profile image
Shah Nawaz Shuvo •

This is a great reference guide. Thank you Emma

Collapse
 
dkamer profile image
David Joseph Kamer •

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

Collapse
 
tutlane profile image
Tutlane •

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

Collapse
 
adityasharan01 profile image
Aditya Sharan •

I think you forgot to put what is the meaning of "gi" or "ig" in regular expression
For other folks out there
g modifier: global. All matches (don't return on first match)
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])

Collapse
 
candidodmv profile image
Vinicius Dutra •

thanks for share this useful tips

Collapse
 
arangates profile image
Aranganathan •

wow stuff !

Collapse
 
_faizeee profile image
faizee •

Finally I understand hoe regular expressions works

Collapse
 
alephnaught2tog profile image
Max Cerrina •

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

Collapse
 
glonkar18 profile image
Gaurav Lonkar •

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

Collapse
 
cyr1l profile image
cyr1l •

Great cheat sheet! Regex tester for JavaScript: extendsclass.com/regex-tester.html

Collapse
 
heratpatel profile image
Herat Patel •

Thanks, very helpful...!

Collapse
 
jannikwempe profile image
Jannik Wempe •

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

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

Collapse
 
matthew_collison profile image
Matthew Collison •

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

Collapse
 
seokjeon profile image
Se-ok Jeon •

Thx for your great post. it helped me a lot. If you don't mind, Can I translate this post into Korean? Surely, there will be a link at top of my post directing to this original post.

Collapse
 
devvsakib profile image
Sakib Ahmed •

i just bookmarked to save my time! great article

Collapse
 
ridvankartal profile image
Rıdvan •

Thanks, great cheat sheet...