Шаблон проверки Angular7 для приема только целых чисел и двойных значений

Я уже потратил много времени на это :(.

Я хочу принимать только целые или двойные положительные числа: например: 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. может кто-нибудь помочь мне понять это, пожалуйста.

Обновить Я также хочу ограничить количество мест после точки.


person Furqan S. Mahmoud    schedule 20.07.2019    source источник
comment
Можете ли вы создать стекблиц?   -  person Chellappan வ    schedule 20.07.2019
comment
Мне удалось решить проблему, спасибо   -  person Furqan S. Mahmoud    schedule 20.07.2019


Ответы (2)


Если вы хотите принять целое или двойное число с неограниченным количеством мест после или до точки, это поможет:

https://stackblitz.com/edit/angular-g75hxt

amount: [{ value: entry.amount, disabled: false }, [Validators.required, Validators.min(0)]],
person Pa Ri    schedule 20.07.2019
comment
извините, это не то, что мне было нужно. - person Furqan S. Mahmoud; 20.07.2019
comment
@FurqanS.Mahmoud, но вы сказали: «Я хочу принимать только целые числа или числа с двойным положительным знаком». Это было твое требование. - person Pa Ri; 20.07.2019
comment
извините, я думаю, что я не совсем ясно выразился, да, мне это нужно, плюс мне нужно, чтобы после точки было только 4 места на случай, если число двойное. поэтому я должен использовать для этого регулярное выражение. min(0) валидатора недостаточно. - person Furqan S. Mahmoud; 20.07.2019

Это сработало для меня:

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})?$
person Furqan S. Mahmoud    schedule 20.07.2019