Block F

Character Classes

[a-j]    any character a-j (ranges ar asciicographical)
[ab%*pqZB]  any of a, b, %, p, q, Z or B  (list character class)
[a-z580]  


inside the brackets metacharacters:
-  indicates a range
[ and ] bound a list character class

To defang magic:  use a \.

[\[42up] matches [, 4, 2, u, p.

SNOTty Character Classes

[^a-z]  anything BUT a-z.
[^aeiouy]  anything but a, e, i, o, u, y
^ must appear first or a hat's just a hat.
Special character classes . any character except for \n. ^ beginning of string $ end of string \d digit

Regular Expressions There are dialects for Python, Java, and JavaScript.

Juxtaposition "and then immediately"


[abc][def][ghi]   beg, being

phone number

xxx-xxx-xxxx

2-9
digit
digit
-
2-9
digit
digit
-
digit
digit
digit
digit

^[2-9][0-9][0-9]-[2-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$
^([2-9][0-9]{2}-){2}[0-9]{4}$
^([2-9]\d{2}-){2}\d{4}$

match an integer

^[+-]?\d+$

function isANaturalNumber(s)
{
    return /^\d+$/.matches(s);
}
Multiplicity operators:

{n}  n times
{n,} n or more times operator
{m,n} at least m but not more than n times
?    once or not at all
*    zero or more time
+    one or more times

These are postfix unary operators. 
Multplicity forst
then juxtaposition
use ( and ) to override