Я адаптировался к ответу Акеллехе, чтобы он соответствовал диапазону символов валюты:
var regex = new RegExp("^-?[^0-9]?[0-9]*[0-9\u002e]+%?$");
и для получения результата для дополнительного анализа:
var regex = new RegExp("^(-?)([^0-9]?)([0-9]*[0-9\u002e]+)(%?)$");
// $1 captures the negative sign,
// $2 captures the currency symbol
// $3 captures the number
// $4 captures the percent sign