Character classes
Character classes work just like their counterparts from regular expressions, in fact they literally get compiled into identical regexes in the parser.
For example, this grammar matches a single alphanumeric character:
alphanum.peg
grammar Alphanum
  root  <-  [A-Za-z0-9]
This will parse any character matched by the class, and no others:
require('./alphanum').parse('a')
   == { text: 'a', offset: 0, elements: [] }
require('./alphanum').parse('7')
   == { text: '7', offset: 0, elements: [] }
require('./alphanum').parse('!')
SyntaxError: Line 1: expected one of:
    - [A-Za-z0-9] from Alphanum::root
     1 | !
         ^
There is a special character class denoted by . (period). This matches any
character.
anything.peg
grammar Anything
  root  <-  .
require('./anything').parse('a')
   == { text: 'a', offset: 0, elements: [] }