$!2-3 would be delayed evaluation of $2-3 so thats not the format.
This is the simple format
IF (!$2-3) { or just IF (!$2) { since if there is $2 then there wont be a $3 (however please read below)
This of course holds for most peoples scripts, but if u passed parameters as part of an $identifer, then you can well have a $null in $2 or $3, so you would think that !$2-3 is the answer, but they are actually handled slightly differently if passed as /command vs $identifier, when testing $2-3 as passed to a command (when they dont exist) the result value is $null, but when passed as $identifer such as $blah(a,,,d) then $2-3 result in 1 character a space becuase its $null<space>$null
if (!$numtok($2-3,32)) { <-- thats pretty close and would be enough for 99% of functions
However it does fail if $2 was actually passed as a space charcter, that is then eaten up in the gettok.
The only thing i can think that well exactly match would be if ($len($2-3) <= $calc(3 - 2)) {
I used $calc(3 - 2) becuase I assume your meaning his for more than just $2-3 maybe $5-19 if ($len($5-19) <= $calc(19 - 5)) and the 5 and 19 may even be in variables etc.
I guess it comes down to if u know your IF well never be in a $identifier then its easy, if not then its starts getting harder, doubly so if u cant know the possable contents of parameters.