## Why is this an issue?

In regular expressions, anchors (`^`, `$`, `\A`, `\Z` and `\z`) have higher precedence than the `|` operator. So in a regular expression like `^alt1|alt2|alt3$`, `alt1` would be anchored to the beginning, `alt3` to the end and `alt2` wouldn’t be anchored at all. Usually the intended behavior is that all alternatives are anchored at both ends. To achieve this, a non-capturing group should be used around the alternatives.

In cases where it is intended that the anchors only apply to one alternative each, adding (non-capturing) groups around the anchors and the parts that they apply to will make it explicit which parts are anchored and avoid readers misunderstanding the precedence or changing it because they mistakenly assume the precedence was not intended.

### Noncompliant code example

    /^a|b|c$/

### Compliant solution

    /^(?:a|b|c)$/

or

    /^a$|^b$|^c$/

or, if you do want the anchors to only apply to `a` and `c` respectively:

    /(?:^a)|b|(?:c$)/