In regex there are a number of different modes which can be applied to control aspects of how patterns are matched, generally relating to how newlines are detected, and whether uppercase and lowercase characters are considered the same.
To apply a mode to a regex, you supply the Modes
parameter when compiling
the regex - either via the dedicated Compile action, or when using any of
the functions or tags with a single-use pattern.
The parameter accepts a comma-delimited list of codes, to determine which modes to turn on. (The codes for each mode can be found detailed below.)
Modes can also be defined as part of a regex pattern itself, in the form of flags which enable or disable that mode. (The flags for each mode can be found detailed below.)
A flag can be turned on for the rest of the expression, by using (?flag)
,
turned off by using (?-flag)
and applied for only part of an
expression by using (?flag:expression)
For example:
(?i)this is case insensitive
(?i)this is case insensitive (?-i) but this is not
(?i:this is case insensitive) but this is not
(?i:this is (?-i:except this part) case insensitive)
You can enable or disable multiple flags at once, like so:
(?is)case insensitive and single-line enabled
(?m-d:multi-line enabled, but unix lines disabled)
In cfRegex, all modes are disabled by default, with the exception of Comment mode which is enabled when using the cfregex tag (but disabled for functions).
Tells the regex engine that only the newline character (\n
) should be treated
as part of a newline.
Carriage returns (\r
) should not be considered a part of a newline.
This is significant when combined with Multiline mode and the ^
and $
markers are used to match start/end of lines.
Means that uppercase and lowercase letters are not differentiated - i.e. "abc" and "ABC" are considered the same.
Enables commenting and free-spacing mode.
All whitespace is ignored unless preceeded by a backslash.
When a hash (#
) is encountered, all content until the end of the line is ignored.
When enabled, the ^
and $
markers will match start and end of lines, as
opposed to just start and end of input (which can be matched using \A
and
\z
instead.)
By default, the .
character matches everything except newlines.
The dot-all mode means .
matches everything including newlines.
This mode is similar to Case-insensitivity, but whilst that applies only to standard characters, this will apply to unicode characters also.
When this flag is enabled, two characters will be considered to match if their full canonical decompositions match.