Always use the /x flag. [Extended Formatting]
Always use the /m flag. [Line Boundaries]
Use \A and \z as string boundary anchors. [String Boundaries]
Use \z, not \Z, to indicate "end of string". [End of String]
Always use the /s flag. [Matching Anything]
Consider mandating the Regexp::Autoflags module. [Lazy Flags]
Use m{...} in preference to /.../ in multiline regexes. [Brace Delimiters]
Don't use any delimiters other than /.../ or m{...}. [Other Delimiters]
Prefer singular character classes to escaped metacharacters. [Metacharacters]
Prefer named characters to escaped metacharacters. [Named Characters]
Prefer properties to enumerated character classes. [Properties]
Consider matching arbitrary whitespace, rather than specific whitespace characters. [Whitespace]
Be specific when matching "as much as possible". [Unconstrained Repetitions]
Use capturing parentheses only when you intend to capture. [Capturing Parentheses]
Use the numeric capture variables only when you're sure that the preceding match succeeded. [Captured Values]
Always give captured substrings proper names. [Capture Variables]
Tokenize input using the /gc flag. [Piecewise Matching]
Build regular expressions from tables. [Tabular Regexes]
Build complex regular expressions from simpler pieces. [Constructing Regexes]
Consider using Regexp::Common instead of writing your own regexes. [Canned Regexes]
Always use character classes instead of single-character alternations. [Alternations]
Factor out common affixes from alternations. [Factoring Alternations]
Prevent useless backtracking. [Backtracking]
Prefer fixed-string eq comparisons to fixed-pattern regex matches. [String Comparisons]