Ищу регулярное выражение для соответствия определенному десятичному формату в ng-шаблоне

Я ищу регулярное выражение, чтобы положить в NG-шаблон атрибута Angular.

я ищу выражение, которое удовлетворяет только конкретному десятичному шаблону, т.е.

exactly one digit --> than a decimal --> exactly 2 digits 

я придумал

\d{1}\.{1}\d{2}?

Вышеуказанный шаблон соответствует следующим номерам правильно.

2.22
3.12
0.34

что хорошо, но если пользователь входит 12.12 это не отвергает это так, как мне нужно.

2 ответа

Решение

Если вы хотите именно этот контент и ничего больше, вы должны использовать начало слова (^) и конец слова ($якоря. Ваше регулярное выражение будет:

var regex = /^\d\.\d{2}$/;         //then just bind to controller

Проверено на regex101

Согласно ng-pattern документация

Если выражение оценивается как объект RegExp, то это используется напрямую. Если выражение вычисляется как строка, оно будет преобразовано в RegExp после переноса в ^ а также $ персонажи. Например, "abc" будет преобразован в new RegExp('^abc$'),

Обратите внимание, что если вы используете строковый ввод, вам придется избегать обратной косой черты, чтобы получить правильную строку регулярного выражения. В этом случае вы можете просто использовать

<input ng-model="yourModel" ng-pattern="\\d\\.\\d{2}" >

ровно одна цифра -> десятичная дробь -> ровно 2 цифры

Используйте границы слов, чтобы они не соответствовали нежелательному тексту с обеих сторон:

\b\d\.\d{2}\b

RegEx Demo

Другие вопросы по тегам