У меня есть следующий RegExp в директиве в приложении Angular 5:
private regex = {
number: new RegExp(/^\d+$/),
decimal: new RegExp(/^[0-9]+(\.[0-9]*){0,1}$/g)
};
Внутри события у меня есть следующий вызов:
if (next && !String(next).match(this.regex[this.numericType])) {
event.preventDefault();
}
Моя проблема в том, что RegExp допускает более 2 цифр после запятой. Я пытался удалить * и поставить {0,2} или {1,2}, но это не сработало. Любая идея, что я должен изменить в приведенном выше коде, чтобы он работал не более чем с двумя десятичными знаками?





Вы бы сделали это так
^[0-9]+(?:\.[0-9]{0,2})?$
^ # BOS
[0-9]+ # Required, many digits
(?: # Optional group
\. [0-9]{0,2} # decimal, followed by 0 - 2 digits
)?
$ # EOS