Building microservices with Dropwizard, MongoDB & Docker

PHP Regex Part – 1 (Regex overview)

Regular expressions (regex) allow you to form sets of words using brackets [ and ]. For example, I can define a set [Ff] that will match “F” or “f”. You can also use sets to accept ranges, for example [A-Z] will accept all uppercase letters, [A-Za-z] will accept all letters whether uppercase or lowercase, and [a-z0-9] will accept lowercase letters and numbers only. Inside sets, the caret symbol ^ means “not”, therefore [^A-Z] will accept everything that is not an uppercase letter, and [^A-Za-z0-9] will accept symbols only – no uppercase letters, no lowercase letters, and no numbers.

 

[A-Za-z] will accept all letters whether uppercase or lowercase, and [a-z0-9] will accept lowercase letters and numbers only. Inside sets, the caret symbol ^ means “not”, therefore [^A-Z] will accept everything that is not an uppercase letter, and [^A-Za-z0-9] will accept symbols only – no uppercase letters, no lowercase letters, and no numbers.

 

Here is a list of some novice regular expressions, again along with string used to match, and whether or not a match is made:

 

Novice regexes overview – PHP

Regex String Result
/[Ff]oo/ Foo Match
/[^Ff]oo/ Foo No match; the regex says “Anything that is not F or f, followed by “oo”. This would match “too”, “boo”, “zoo”, etc.
/[A-Z][0-9]/ K9 Match
/[A-S]esting/ Testing No match; the acceptable range for the first character ends at S
/[A-T]esting/ Testing Match; the range is inclusive
/[a-z]esting[0-9][0-9]/ TestingAA No match
/[a-z]esting[0-9][0-9]/ testing99 Match
/[a-z]esting[0-9][0-9]/ Testing99 No match; case sensitivity!
/[a-z]esting[0-9][0-9]/i Testing99 Match; case problems fixed
/[^a-z]esting/ Testing Match; first character can be anything that is not a, b, c, d, e, etc (lowercase)
/[^a-z]esting/i Testing No match; the range excludes lowercase characters only, so you would think T would be fine. However, the “i” at the end makes it insensitive, which turns [^a-z] into [^a-zA-Z]

 

The last one is a common “gotcha”, so make sure you understand why it does not match.

Let's Talk

Do you want to learn more about how I can help your company overcome problems? Let us have a conversation.