var scale = $('#'+fields[i].id+'-scale').val();
var decimalOnly = '/^\s*-?[1-9]\d*(\,\d{1,'+scale+'})?\s*$/';
if (fields[i].value != "" && !(fields[i].value).match(decimalOnly)) {
$(fields[i]).addClass('form-attr-error');
result = false;
}
else {
$(fields[i]).removeClass('form-attr-error');
}
В приведенном выше RegEx, передающем значение заполнителя «масштаб» и сравнивающем value.match(RegEx), он не работает.
Но это так работает
value.match(/^\s*-?[1-9]\d*(\,\d{1,2})?\s*$/);
пожалуйста, помогите мне в этом, как я могу передать значение заполнителя вместо "2".



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


.match автоматически преобразует строковый аргумент в регулярное выражение; если вы хотите четко указать на это, вы можете использовать конструктор RegExp. Но обратите внимание, что косые черты не являются частью регулярного выражения, они являются частью регулярного выражения буквальный. Т.е. они будут делать то же самое:
foo.match(/a/)
foo.match("a")
foo.match(new RegExp("a"))
Все они будут делать то же самое, что и разные из первого набора:
foo.match(//a/)
foo.match("/a/")
foo.match(new RegExp("/a/"))
Первые будут соответствовать однобуквенной последовательности a; последние будут соответствовать трехбуквенной последовательности /a/.
tl; dr: избавиться от косой черты в decimalOnly.