This expression can be hard to read.  I'd rather break it out as:

  if ('0' <= ch && ch <= '9')
    continue;
  if ('a' <= ch && ch <= 'z')
    continue;
  if ('A' <= ch && ch <= 'Z')
    continue;
  ...
  return false;

Or use a table to check the validity:

  static boolean validChars[128];

  static {
    for (char c = '0'; c <= '9'; c++)
      validChars[c] = true;
    validChars['-'] = true;
    ...
  }

  if (ch > 127 || !vaildChars[ch])
    return false;