DEV Community

Chris Achard
Chris Achard

Posted on • Originally published at twitter.com

Intro to Regex for Web Developers

This was originally posted as a twitter thread: https://twitter.com/chrisachard/status/1181583499112976384

1.

Regular expressions find parts of a string that match a pattern

In JavaScript they're created in between forward slashes //, or with new RegExp()

and then used in methods like match, test, or replace

You can define the regex beforehand, or directly when calling the method

new regex

2.

Match individual characters one at a time,

or put multiple characters in square brackets [] to capture any that match

Capture a range of characters with a hyphen -

square brackets and hyphen

3.

Add optional flags to the end of a regex to modify how the matcher works.

In JavaScript, these flags are:

i = case insensitive
m = multi line matching
g = global match (find all, instead of find one)

regex flag modifiers

4.

Using a caret ^ at the start means "start of string"

Using a dollar sign $ at the end means "end of string"

Start putting groups of matches together to match longer strings

caret dollar sign, group matches together

5.

Use wildcards and special escaped characters to match larger classes of characters

. = any character except line break

\d = digit
\D = NOT a digit

\s = white space
\S = any NON white space

\n new line

wildcards

6.

Match only certain counts of matched characters or groups with quantifiers

  • = zero or more
  • = one more more ? = 0 or 1 {3} = exactly 3 times {2, 4} = two, three, or four times {2,} = two or more times

quantifiers

7.

Use parens () to capture in a group

match will return the full match plus the groups, unless you use the g flag

Use the pipe operator | inside of parens () to specify what that group matches

| = or

parens to capture group

8.

To match special characters, escape them with a backslash \

Special characters in JS regex are: ^ $ \ . * + ? ( ) [ ] { } |

So to match an asterisks, you'd use:

\*

Instead of just *

special characters

9.

To match anything BUT a certain character, use a caret ^ inside of square brackets

This means ^ has two meanings, which can be confusing.

It means both "start of string" when it is at the front of a regex, and "not this character" when used inside of square brackets.

caret to mean NOT

10.

Regexs can be used to find and match all sort of things, from urls to filenames

HOWEVER! be careful if you try to use regexs for really complex tasks, such as parsing emails (which get really confusing, really fast), or HTML (which is not a regular language, and so can't be fully parsed by a regular expression)

There is (of course) much more to regex like lazy vs greedy, lookahead, and capturing

but most of what web developers want to do with regular expressions can use just these base building blocks.

I'm already writing a follow up post with a bunch of real world regex use cases 🎉

 

Like this post?

Find more on twitter: @chrisachard
Or join the newsletter 📬 https://chrisachard.com/newsletter/

Thanks for reading!

Latest comments (36)

Collapse
 
codechunker profile image
codechunker

This is such an awesome post. Thank you so much. There is also one for Java dev.to/codechunker/introduction-to...

Collapse
 
ceblakely profile image
Christina Blakely

This was the best intro guide to regex I could find, thank you!

Collapse
 
chrisachard profile image
Chris Achard

Awesome! Glad I could help 😃

Collapse
 
tapaibalazs profile image
Tápai Balázs

Thank you! I've learned a lot from this post. :)

Collapse
 
oscar6echo profile image
oscar6echo

Very useful summary.

Collapse
 
adisreyaj profile image
Adithya Sreyaj

Regex has always been something which is hard to grasp(atleast for me)....
This post proves it to be wrong.

Excellent Post Chris.
Thanks✌️

Collapse
 
chrisachard profile image
Chris Achard

Glad it could help!

Yeah, it's often disheartening to see really complex regexes and get totally lost... but just a few basics can get you pretty far!

I still get lost in really complex regexes though 😂 especially when they start involving capturing groups or lookahead, etc.

Collapse
 
icaropnbr profile image
icaropnbr

Nice job! Helped a lot!

;)

Collapse
 
mroeling profile image
Mark Roeling

Great building up of the level of the regex's!
I kinda started my regex knowledge from regular-expressions.info/, the guys that also made RegexBuddy. Very detailed and with a lot of simple examples.

And if you really want to get a feeling for regex's, try regexcrossword.com/.

Collapse
 
chrisachard profile image
Chris Achard

Thanks for the extra resources!

Collapse
 
nickytonline profile image
Nick Taylor • Edited

Great read Chris!

One resource I found super useful, once I dove into regexes more was the Mastering Regular Expressions book. I have the 2nd edition, but there appears to be a 3rd edition out.

Looking forward to your next post!

Collapse
 
luis_ferreira profile image
Luís Ferreira

What a great post. I am saving this for the future and sharing it with my colleagues. Thank you!

Collapse
 
orivolfo profile image
Ori Volfovitch

This is the best REGEX explanation + examples I have ever came across on the web!

Thank you!!

Collapse
 
chrisachard profile image
Chris Achard

Awesome! Glad to hear it 😃