In which number set do I belong?
JavaScript (ES6), 121 110 bytes

s=&gt;[...'QRCI'].find((_,i)=&gt;[/(.+)\1\1\.\./,/\.\./,/.+[+-].*i/,/i/][i].test(s))||'QNZ'[k=eval(s),k%1?0:k&gt;0?1:2]


Test cases



let f =

s=&gt;[...'QRCI'].find((_,i)=&gt;[/(.+)\1\1\.\./,/\.\./,/.+[+-].*i/,/i/][i].test(s))||'QNZ'[k=eval(s),k%1?0:k&gt;0?1:2]

console.log(f('73.0'           )) // -&gt; N
console.log(f('4/2'            )) // -&gt; N
console.log(f('-73'            )) // -&gt; Z
console.log(f('-1/3'           )) // -&gt; Q
console.log(f('0.56'           )) // -&gt; Q
console.log(f('0.555...'       )) // -&gt; Q
console.log(f('0.123123123...' )) // -&gt; Q
console.log(f('3.1415926535...')) // -&gt; R
console.log(f('-1.37i'         )) // -&gt; I
console.log(f('7892/5 + 23/4i' )) // -&gt; C




Formatted and commented

s =&gt;                  // given the input string s
  [...'QRCI'].find(   // we first apply some regular expressions:
    (_, i) =&gt; [       //   i = index
      /(.+)\1\1\.\./, //     i = 0 (Q): 3x the same pattern, followed by '..' -&gt; rational
      /\.\./,         //     i = 1 (R): '..' without the repeated pattern -&gt; real
      /.+[+-].*i/,    //     i = 2 (C): a real part +/- an imaginary part -&gt; complex
      /i/             //     i = 3 (I): just an imaginary part -&gt; imaginary
    ][i].test(s)      //   this is a find(), so we exit as soon as something matches
  ) || 'QNZ'[         // if all regular expressions failed:
    k = eval(s),      //   assume the expression can now be safely evaluated as JS code
    k % 1 ?           //   if there's a decimal part:
      0               //     -&gt; rational
    :                 //   else:
      k &gt; 0 ?         //     if strictly positive:
        1             //       -&gt; natural
      :               //     else:
        2             //       -&gt; integer
  ]                   //