Как можно эффективно использовать регулярное выражение для сопоставления входных данных, которые могут быть положительной или отрицательной суммой в долларах или процентами. $
Затем цифры с необязательной запятой в качестве разделителя групп di git после di git в тысячах / сотнях тысяч / миллионах ... За которыми следует необязательная десятичная точка и одна или две цифры И, наконец, возможный%, но только если ввод не содержит $, а число от -100,00 до + 100,00
Так что сопоставить ввод, например: 12, -60, 25,50 долларов США, - 1,5 доллара США, + 25 000 долларов США, 5,5%, -100%, + 100%, 0,01%
И вернуть false с вводом, например: Text, + 10% долларов США, - 5.001
Я оценивал их по отдельности:
function percentValue(input) {
regex = /^[+-]?\$?(?=.)(\d*|\d{1,3}(,\d{3})*)?(\.\d{1,2})?$/;
return regex.test(input);
}
function dollarValue(input) {
regex = /^[+-]? *100(\.0{0,2})? *%?$|^[+-]? *\d{1,2}(\.\d{1,2})? *%?$/;
return regex.test(input);
}
Результаты
percentValue('5.5%'); // True
percentValue('-100%'); // True
percentValue('+.01%'); // True
percentValue('0.001'); // False
percentValue('101%'); // False
percentValue('$100%'); // False
dollarValue('+$12'); // True
dollarValue('-$60.5'); // True
dollarValue('$25,000'); // True
dollarValue('-$5.001'); // False
dollarValue('1,00.25'); // False
dollarValue('$text'); // False
Я безуспешно пытался объединить их в один. Следует ли использовать другой прогноз для процента?