I looked at the following 2 specifications and got the following information:
2.2 Basic Rules

4.1.1. Syntax

The token and path cannot contain CTL. The regular expressions of the two are as follows:
TOKEN_RE = %r"\A[[!-~]&&[^()<>@,;:\\\"/?=\[\]{}]]+\z"
PATH_VALUE_RE = %r"\A[[ -~]&&[^;]]*\z"
What's the difference between the following two uses? How do you match CTLs?
[!-~]
[ -~]