decimal package:sbv

Recognize a decimal number.
>>> decimal
(re.+ (re.range "0" "9"))

>>> prove $ \(s :: SString) -> s `match` decimal .=> sNot (s `match` KStar asciiLetter)
Q.E.D.
Recognize a hexadecimal number. Must have a prefix of the form 0x/0X.
>>> hexadecimal
(re.++ (re.union (str.to.re "0x") (str.to.re "0X")) (re.+ (re.union (re.range "0" "9") (re.range "a" "f") (re.range "A" "F"))))

>>> prove $ \(s :: SString) -> s `match` hexadecimal .=> sAny (.== take 2 s) ["0x", "0X"]
Q.E.D.