/^(?: 0\ but\ true | (?: \s* # leading spaces ignored [-+]? # optional sign (?: (?i: inf|infinity|nan ) | # any case of inf or nan (?: \d+ (?:\.\d*)? | \.\d+ ) # digits, optional . (?: [eE] [-+]? \d+ )? # optional exponent ) \s* # trailing spaces (including "\n") ) )\z /x;