Strange example. If an expression has head Integer
it cannot have head List
. But I understand your question.
You could use the two argument form of Except
. The second argument specifies a pattern that must be matched.
f[m : Except[x_ /; Mod[x, 7] == 0, _Integer] : 0] := m
f[15]
f[]
f[3.5]
f[14]