Ищу регулярное выражение для соответствия определенному десятичному формату в 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
Согласно ng-pattern
документация
Если выражение оценивается как объект RegExp, то это используется напрямую. Если выражение вычисляется как строка, оно будет преобразовано в RegExp после переноса в
^
а также$
персонажи. Например,"abc"
будет преобразован вnew RegExp('^abc$')
,
Обратите внимание, что если вы используете строковый ввод, вам придется избегать обратной косой черты, чтобы получить правильную строку регулярного выражения. В этом случае вы можете просто использовать
<input ng-model="yourModel" ng-pattern="\\d\\.\\d{2}" >
ровно одна цифра -> десятичная дробь -> ровно 2 цифры
Используйте границы слов, чтобы они не соответствовали нежелательному тексту с обеих сторон:
\b\d\.\d{2}\b