static format(numericStringOrDomElement, ...options) {
        if (AutoNumericHelper.isUndefined(numericStringOrDomElement) || numericStringOrDomElement === null) {
            return null;
        }

        // Retrieve the value to format
        let value;
        if (AutoNumericHelper.isElement(numericStringOrDomElement)) {
            value = AutoNumericHelper.getElementValue(numericStringOrDomElement);
        } else {
            value = numericStringOrDomElement;
        }

        if (!AutoNumericHelper.isString(value) && !AutoNumericHelper.isNumber(value)) {
            AutoNumericHelper.throwError(`The value "${value}" being "set" is not numeric and therefore cannot be used appropriately.`);
        }

        // Manage options
        const optionsToUse = this._generateOptionsObjectFromOptionsArray(options);

        // Initiate a very basic settings object
        const settings = Object.assign({}, this.getDefaultConfig(), optionsToUse);
        settings.isNegativeSignAllowed = value < 0;
        settings.isPositiveSignAllowed = value >= 0;
        this._setBrackets(settings);

        const regex = {};
        this._cachesUsualRegularExpressions(settings, regex); // This is needed by `_stripAllNonNumberCharactersExceptCustomDecimalChar` that uses those regex

        // Check the validity of the `value` parameter
        // Convert the value to a numeric string, stripping unnecessary characters in the process
        let valueString = this._toNumericValue(value, settings);
        if (isNaN(Number(valueString))) {
            AutoNumericHelper.throwError(`The value [${valueString}] that you are trying to format is not a recognized number.`);
        }

        // Check if the given valueString is valid
        if (!this._isWithinRangeWithOverrideOption(valueString, settings)) {
            // Throw a custom event
            AutoNumericHelper.triggerEvent(AutoNumeric.events.formatted, document, {
                oldValue   : null,
                newValue   : null,
                oldRawValue: null,
                newRawValue: null,
                isPristine : null,
                error      : 'Range test failed',
                aNElement  : null,
            }, true, true);
            AutoNumericHelper.throwError(`The value [${valueString}] being set falls outside of the minimumValue [${settings.minimumValue}] and maximumValue [${settings.maximumValue}] range set for this element`);
        }

        // Directly format any `valuesToStrings` values, if found
        if (settings.valuesToStrings && this._checkValuesToStringsSettings(value, settings)) {
            return settings.valuesToStrings[value];
        }

        // Generate the `negativePositiveSignPlacement` option as needed
        this._correctNegativePositiveSignPlacementOption(settings);
        // Calculate the needed decimal places
        this._calculateDecimalPlacesOnInit(settings);

        // Multiply the raw value with `rawValueDivisor` if defined
        if ((!AutoNumericHelper.isUndefinedOrNullOrEmpty(settings.rawValueDivisor) && settings.rawValueDivisor !== 0) && // Only divide if the `rawValueDivisor` option is set
            valueString !== '' && valueString !== null) { // Do not modify the `valueString` if it's an empty string or null
            valueString *= settings.rawValueDivisor;
        }

        // Everything is ok, proceed to rounding, formatting and grouping
        valueString = this._roundFormattedValueShownOnFocus(valueString, settings);
        valueString = this._modifyNegativeSignAndDecimalCharacterForFormattedValue(valueString, settings);
        valueString = this._addGroupSeparators(valueString, settings, false, valueString);

        return valueString;
    }
Format the given number (or numeric string) with the given options. This returns the formatted value as a string.
This can also format the given DOM element value with the given options and returns the formatted value as a string.
Note : This function does *not* update that element value with the newly formatted value.
This basically allows to get the formatted value without first having to initialize an AutoNumeric object.

@param {number|string|HTMLElement|HTMLInputElement} numericStringOrDomElement A number, or a string that represent a javascript number, or a DOM element
@param {object|null} options Multiple objects can be passed, the latter overwriting the settings from the former ones
@returns {string|null}