# REGEX units Cheat Sheet

*   **Anchors**

    * `^`: start of the string or the start of a line in a multiline pattern
    * `$`: end of the string or the end of a line in a multiline pattern
    * `\b`: word boundary
    * `\B`: not word boundary (opposite of `\b`)

    Note: Anchors are non-quantifiable (i.e. cannot be followed by a quantifier).

    **Character sequences**

    * `.`: any character except line breaks
    * `\w`: any word character
    * `\W`: any non-word character (opposite of `\w`)
    * `\s`: any whitespace character
    * `\S`: any non-whitespace character (opposite of `\s`)
    * `\d`: any digit character
    * `\D`: any non-digit character (opposite of `\d`)
    * `[abc]`: a single character in the given set (here `a`, `b` or `c`)
    * `[^abc]`: a single character not in the given set (opposite of `[abc]`)
    * `[a-z]`: a single character in the given range (here between `a` and `z` inclusive)
    * `[^a-z]`: a single character not in the given range (opposite of `[a-z]`)
    * `[a-zA-Z]`: a single character in either of the given ranges

    Note: Use `\` to escape special characters (e.g. `\`, `/`, `[`, `]`, `(`, `)`, `{`, `}` etc.).

    **Quantifiers**

    * `a?`: zero or one of `a` (equal to `a{0,1}`)
    * `a*`: zero or more of `a` (equal to `a{0,}`)
    * `a+`: one or more of `a` (equal to `a{1,}`)
    * `a{3}`: exactly 3 of `a`
    * `a{3,}`: 3 or more of `a`
    * `a{3,5}`: between 3 and 5 of `a` (inclusive)

    Note: `a` is any valid quantifiable expression.

    **Groups**

    * `(ab)`: match and capture everything enclosed (here exactly `ab`)
    * `(a|b)`: match and capture either one character (here `a` or `b`)
    * `(?:ab)`: match everything enclosed, without capturing

    **Flags**

    * `g`: Global
    * `m`: Multiline
    * `i`: Case insensitive
    * `u`: Unicode

    Note that this cheatsheet is meant only as a starting point and is by no means a complete guide to all the features and nuances of regular expressions. You can also read [6 JavaScript Regular Expression features you can use today](https://www.30secondsofcode.org/blog/s/6-javascript-regexp-tricks) for a deeper dive into some more advanced features.
