Values:

. the period can match any single character. "h." will match "ha", "hb", etc. This matches all characters, not only alphanumeric.
[] square brackets match against a range of characters - "[a-z]" matches all lowercase letters, "[0-9]" matches all numbers and "[hi2u]" matches "h", "i", "2" or "u". You can also use any combination, such as "[a-g0-9p]" that matches all numbers, the lowercase letters a through g and p.
[^] this matches against a character not contained within the brackets. This is similar to the previous syntax, except now "[^hi2u]" matches every character that is not an "h", an "i", a "2" or an "i".

Anchors:
^ denotes the string must start at this point.
$ denotes the string must end at this point.

"pie" alone will match "I like pie", "pie is good" or "Chicken pie no thanks".
"^pie" will match "pie is good" and any other string starting with "pie".
"pie$" will match "I like pie" and any other string ending with "pie".
"^pie$" will match only the string "pie".

Quantifiers:
Up to now, we have only matched one character at any time.

* means zero or more of the previous expression. "go*gle" matches "ggle","gogle","google","gooogle", and so on.
means one or more of the previous expression.
? means zero or one of the previous expression. "pin?e" will match both "pine" and "pie".

The rest:
The pipe symbol | has meaning "OR". "gray|grey" matches "gray" or "grey".
Parenthesis, or brackets, can be used to group expressions. The above example could be simplified to "gr(e|a)y".

Escape Special Meaning

Since the characters . *^$[]() all have a special meaning in a regex pattern, if you wish to match literally a period for example, you must escape it. ".html" matches any character followed by "html". ".html" matches only ".html".