The macro \doifnumberelse is not behaving as I would have expected from the description in Taco Hoekwater's article "Context System Macros: part 1: General macros".
There I read:
The next macro executesa command depending of the outcome of a test on numerals.
\doifnumberelse {string} {then ...} {else ...}
This text suggest that the the test is on whether "string" as a whole is a number (taken as having digits 0123456789 only, I presume) of contains nondigits and thus isn't a number.
However, it seems the macro tests on the first character only.
Below follows a minimal example, the context version is:
ConTeXt ver: 2010.02.18 14:48 MKIV fmt: 2010.2.20 int: english/english
% test result of \doifnumberelse
\def\test#1{#1 is \doifnumberelse{#1}{a number}{not a number}\crlf}
\starttext
\test{1} % result: 1 is a number
\test{a} % result: a is not a number
\test{1a} % result: 1a is a number
\test{a1} % result: a1 is not a number
\stoptext