Is it an integer, a string, or a decimal? Your challenge is to determine whether the given input is an integer, a string, or a decimal.

Rules


A string is any input that is not an integer or a float
An integer must contain only numeric characters and must not start with a zero
A decimal is any input that contains the period (.) and the period is surrounded by numeric characters.


Note: .01 is not considered a valid decimal. 


The program should output a raw string either "string", "integer", or "decimal".
You may assume only printable ASCII characters are used


Cases:

asdf -&gt; string
asdf3.4 -&gt; string
2 -&gt; integer
2.0 -&gt; decimal
02 -&gt; string
40. -&gt; string
. -&gt; string
.01 -&gt; string
0.0 -&gt; decimal
.9.9.9 -&gt; string
[empty space] -&gt; string


EDIT: Fixed the typo. I meant .01 without the leading zero, not with. If that made it unclear, its fixed now!

This is code-golf, so shortest answer wins.
Pyth, 33 bytes (39 without packed string)

@_c."at%¸Ã`9hàãáÊ"7.x/`MsB+vz0z0


Some bytes are stripped due to Markdown. Official code and test suite.

Without packed string:

@_c"integerdecimalstring"7.x/`MsB+vz0z0


It passes all of above test cases. Basically, to check if a string is a integer or decimal, it checks whether the string can be evaluated as a python literal (v), and if so, if you can add 0 to it and covert it back to its string representation, and get the input string. If so, it's an integer or a decimal. If you can also cast it to an int and still get the original string back, it's an integer.