Я уже потратил много времени на это :(.
Я хочу принимать только целые или двойные положительные числа:
бывший:
40000, 500.0000, 400.1234
Мне удалось сделать это для целых чисел:
// somewhere at the code
export const NUMERIC_PATTREN = '^-?[0-9]\\d*(\\.\\d{1,2})?$';
// component code:
amount: [{ value: entry.amount, disabled: false }, [Validators.required,Validators.pattern(NUMERIC_PATTREN )]],
Однако ввод не принимает значения из формата 500.0000 или 400.1234.
может кто-нибудь помочь мне понять это, пожалуйста.
Обновлять Я тоже хочу ограничить количество мест после точки.
Мне удалось решить проблему, спасибо





Если вы хотите принять целое или двойное число с неограниченным количеством мест после или до точки, это поможет:
https://stackblitz.com/edit/angular-g75hxt
amount: [{ value: entry.amount, disabled: false }, [Validators.required, Validators.min(0)]],
извините, это не то, что мне было нужно.
@FurqanS.Mahmoud, но вы сказали: «Я хочу принимать только целые числа или числа с двойным положительным знаком». Это было твое требование.
извините, я думаю, что я не совсем ясно выразился, да, мне это нужно, плюс мне нужно, чтобы после точки было только 4 места на случай, если число двойное. поэтому я должен использовать для этого регулярное выражение. min(0) валидатора недостаточно.
Это сработало для меня:
export const NUMERIC_PATTREN = '^-?[0-9]\\d*(\\.\\d{1,4})?$';
это примет целое число или двойное число с максимум 4 знаками после точки.
Если вы хотите увеличить или уменьшить места после точки, вам нужно играть с 4, например:
export const NUMERIC_PATTREN = '^-?[0-9]\\d*(\\.\\d{1,3})?$'; //accepts only 3 places after the point
Если вы хотите неограниченное количество мест после точки, которую вам нужно использовать:
export const NUMERIC_PATTREN = '^-?[0-9]\\d*(\\.\\d*)?$'; //accepts endless places
Если вы не хотите, чтобы пользователь вводил ноль слева, вам нужно начать домен с 1:
^-?[1-9]\\d*(\\.\\d{1,4})?$
Можете ли вы создать стекблиц?