Для углового приложения Нам нужна проверка, так как пользователь может вводить от 0 до 99, а также может вводить до 2-значных десятичных знаков.
Например,
0 -> пройти
0.1 -> Пройдено
1.12 -> пройти
12.12 -> Пройти
100 -> Ошибка
19.111 -> Ошибка
1. -> Ошибка
^[0-9]+([.][0-9]{1,2})?$
этот шаблон работает для других случаев, кроме case (100 -> Fail)
для этого я попробовал что-то вроде шаблона ^([0-9]{1,2})+([.][0-9]{1,2})?$
, но он не работает должным образом.
Пожалуйста, предложите шаблон, который охватывает все случаи.
/^(?:99|\d{1,2})(?:\.\d{1,2})?$/
Так и должно быть, пожалуйста, проверьте это дальше.
Я считаю, что регулярное выражение должно работать. regex101.com/r/qGy9BA/1 Возможно что-то с Validators.pattern или вашей формой.
Вы можете пойти с чем-то вроде этого
/^(?:[1-9][0-9]?|0)(?:\.[0-9]{1,2})?$/
Вот как это работает:
Это не будет соответствовать 09
Validators.pattern('^(?:[1-9][0-9]?|0)(?:\.[0-9]{1,2})?$') Этот шаблон не работает, когда я дайте 100
или что-то 3-значное значение, кроме этого, оно работает нормально. Дайте мне знать, если я что-то пропустил
что значит не работает. Протестировано с 100, 222, 999 и некоторыми другими трехзначными числами, и оно не выбирает ни одно из них.
Возможно, что-то не так с Validators.pattern()
Сделал приведенный ниже шаблон с помощью ответов wnvko и Sameshostee, он работает правильно с этим Validators.pattern('...').
Спасибо @wnvko и @Sameshostee за вашу помощь.
^(?:99|[0-9]{1,2})([.][0-9]{1,2})?$
имейте в виду, что это также будет соответствовать двузначному числу, начинающемуся с нуля, например, 01, 02 и так далее!
Я пытался поставить шаблон типа
Validators.pattern('^(?:99|\d{1,2})(?:\.\d{1,2})?$')
, но ничего не работает, я даю 11.11,1, 1.11, но во всех случаях форма не будет действительной. Дайте мне знать, если я сделал какие-либо ошибки