Member-only story

Reading and writing regular expressions for sane people

Photo by Andri from Pexels

Your regular expressions need love. Reviewers and future maintainers of your regular expressions need even more.

No matter how well you’ve mastered regex, regex is regex and is not designed with human-readability in mind. No matter how clear and obvious you think your regex is, in most cases it will be maintained by a developer who a) is not you and b) lacks context. Many years ago I developed a simple method for sanity checking regex with comments, and I’m constantly finding myself demonstrating its utility to new people.

There are some great guides out there, like this one, but what I’m proposing takes things a step or two further. It may take a minute or two of your time, but it almost invariably saves a lot more than it costs. I’m not even discussing flagrant abuse or performance considerations.

Traditional regex: the do-it-yourself pattern

The condescending regex. Here you’re left to your own devices. Thoughts and prayers.

Kind regex: intention explained

It’s the least you can do! A short line explaining what you’re matching with an example or two (or three).

Careful regex: a human-readable breakdown

Here we ensure that each element of the regex pattern, no matter how simple, is explained in a way that makes it easy to verify that it’s doing what we think it’s doing and can modify it safely. If you’re not an expert with regex, I recommend using one of the many available tools such as regexr.com.

Now that we’ve taken the time to break this down, we can identify the intention behind the patterns and ask better questions: why is the host the only matched group? Was this tested? (Because (0–9.\-A-Za-z] is clearly an error, and there are almost no restrictions on invalid characters)

Unless you’re a sadist (or a masochist), this is definitely a better way to operate: be careful, and if you can’t be careful then at the very least be kind.

Originally published at https://www.industrialcuriosity.com.

--

--

Adam Fisher / fisher king (@therightstuff)
Adam Fisher / fisher king (@therightstuff)

Written by Adam Fisher / fisher king (@therightstuff)

Software developer and writer of words, currently producing a graphic novel adaptation of Shakespeare's Sonnets! See http://therightstuff.bio.link for details.

No responses yet

Write a response