Update:
Internal`RealValuedNumericQ /@ {1, N[Pi], 1/2, Sin[1.], Pi, 3/4, aa, I}
(* {True, True, True, True, True, True, False, False} *)
or
Internal`RealValuedNumberQ /@ {1, N[Pi], 1/2, Sin[1.], Pi, 3/4, aa, I}
(* {True, True, True, True, False, True, False, False} *)
Using @RM's test list
listRM = With[{n = 10^5},
RandomSample[Flatten[{RandomChoice[CharacterRange["A", "z"], n],
RandomInteger[100, n],
RandomReal[1, n],
RandomComplex[1, n],
RandomInteger[100, n]/RandomInteger[{1, 100}, n],
Unevaluated@Pause@5}], 5 n + 1]];
and his realQ
ClearAll@realQrm
SetAttributes[realQrm, Listable]
realQrm[_Real | _Integer | _Rational] := True
realQrm[_] := False
timings
realQrm@listRM; // AbsoluteTiming
(* {0.458046, Null} *)
Internal`RealValuedNumericQ /@ listRM; // AbsoluteTiming
(* {0.247025, Null} *)
Internal`RealValuedNumberQ /@ listRM; // AbsoluteTiming
(* {0.231023, Null} *)
realQ = NumberQ[#] && ! MatchQ[#, _Complex] &
realQ /@ {1, N[Pi], 1/2, Sin[1.], 3/4, aa, I}
(* {True, True, True, True, True, False, False} *)
or
realQ2 = NumericQ[#] && ! MatchQ[#, _Complex] &
realQ3 = NumericQ[#] && FreeQ[#, _Complex] &