In regular expressions the boundaries ^ and \A can only match at the beginning of the input (or, in case of ^ in combination with the MULTILINE flag, the beginning of the line) and $, \Z and \z only at the end.

These patterns can be misused, by accidentally switching ^ and $ for example, to create a pattern that can never match.

Noncompliant Code Example

// This can never match because $ and ^ have been switched around
Pattern.compile("$[a-z]*^"); // Noncompliant

Compliant Solution

Pattern.compile("^[a-z]*$");