Want to know how much website downtime costs, and the impact it can have on your business?
Find out everything you need to know in our new uptime monitoring whitepaper 2021



Whether you’ve never heard of regex before, or use it in your code all the time, one thing is almost certain…it is not that easy to read! Case in point:
/^#?([a-f0-9]{6}|[a-f0-9]{3})$/
Thankfully the Visual Studio team at Microsoft have included several handy features inside the code editor to help using regex a little less painful. But first let’s quickly cover,
Just in case the term is new to you, regex is a portmanteau of regular + expression. Regex is a set of characters that defines a specific search pattern in text, programmers will traditionally use regex to look for specific data patterns in strings.
For example, say I had some code that was reading a stream of data from a .txt file and the only data I want to save from this text file are GUID’s. To accomplish this, we can write a very simple and understandable piece of regex to match the standardised format of a GUID (xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx):
.{8}-.{4}-.{4}-.{4}-.{12}
This regex is made up of three components:
In the screenshot below you can see it in action:
Regex patterns can range from very simple to very complex, you can learn more about Regex and test your own patterns here
Ok, on to the features!
Visual Studio Settings
First things first, you’ll want to make sure the following settings are enabled in your editor (they should be by default).
Regex colour formatting
Visual studio makes regex string patterns easier to distinguish by colourising all the groups, quantifiers, comments, etc.
Regex Options
You can pass in an optional RegexOptions parameter when initialising a new Regex().
Note: The regex colouriser won’t work until any errors on the line are resolved. Just in case you were wondering about the screenshot above.
A few examples of regex options would be:
RegexOptions.IgnoreCase : Use case-insensitive matching. By default, the casing conventions of the current culture are used.
RegexOptions .IgnorePatternWhitespace : Exclude unescaped white space from the pattern, and enable comments after a number sign (#).
RegexOptions .ECMAScript : Instructs the regex engine to behave like the ECMASCript/JavaScript regex engine.
Built-in Regex autocompletion
IntelliSense can assist you when writing your regex patterns. The autocomplete dropdown works inside the pattern string and is helpful to discover the syntax or description of how the tokens operate.
Catching Pattern Errors
To avoid you getting runtime errors, Visual Studio reports errors contained in the pattern in real-time as you code, and gives you advise on how you can fix it:
Highlighted backreferences
Sometimes it can be difficult to see the referenced group for a backreference in your pattern. Visual Studio helps you out here by highlighting both parts of the backreference for you, making it super clear.
I hope you’ve found this slightly shorter post useful. Regex can be an incredibly powerful tool when used correctly, and I’d like to cover it in more detail at a later date, so keep your eyes peeled!
Share this
4 min read How AI Is Shifting Software Engineering’s Primary Constraint For most of the history of software engineering, the primary constraint was production. Code was expensive, skilled engineers were scarce, and shipping features required concentrated human effort. Velocity was limited by how fast people could reason, implement, test, and deploy. That constraint shaped everything from team size,
5 min read Autonomous Code, Trust Boundaries, and Why Governance Now Matters More Than Ever In Part 1, we looked at how AI has reduced the cost of building monitoring tools. Then in Part 2, we explored the operational and economic burden of owning them. Now we need to talk about something deeper. Because the real shift isn’t
6 min read The Real Cost of Owning Monitoring Isn’t Code — It’s Everything Else In Part 1, we explored how AI has dramatically reduced the cost of building monitoring tooling. That much is clear. You can scaffold uptime checks quickly, generate alert logic in minutes, and set-up dashboards faster than most teams used to schedule the kickoff
5 min read AI Has Made Building Monitoring Easy. It Hasn’t Made Owning It Any Easier. A few months ago, I spoke to an engineering manager who proudly told me they had rebuilt their monitoring stack over a long weekend. They’d used AI to scaffold synthetic checks. They’d generated alert logic with dynamic thresholds. They’d then wired everything
3 min read In the previous posts, we’ve looked at how alert noise emerges from design decisions, why notification lists fail to create accountability, and why alerts only work when they’re designed around a clear outcome. Taken together, these ideas point to a broader conclusion. That alerting is not just a technical system, it’s a socio-technical one. Alerting
3 min read In the first two posts of this series, we explored how alert noise emerges from design decisions, and why notification lists fail to create accountability when responsibility is unclear. There’s a deeper issue underneath both of those problems. Many alerting systems are designed without being clear about the outcome they’re meant to produce. When teams
Find out everything you need to know in our new uptime monitoring whitepaper 2021