如何在正则表达式中仅允许3位数和1位数

时间:2017-07-31 10:53:40

标签: angularjs regex angular-material ng-pattern angularjs-ng-pattern

我想这样做:3.40且不超过3个字符和一个点:

<md-input-container class="md-block">
                    <label>Marks/CGPA</label>
                    <input type="text" name="education.cgpa" ng-model="education.cgpa"
                           ng-pattern="/^[0-9]{0,4}$/">
                    <div class="input-validation" ng-show="educationSaveForValidate['education.cgpa'].$error.pattern">
                        Insert valid CGPA
                    </div>
                </md-input-container>

如何在正则表达式中仅允许3位数和1个点?

3 个答案:

答案 0 :(得分:2)

您可以使用单个正则表达式

ng-pattern="/^(?!.{5})\d*\.?\d+$/"

或 - 允许空字符串:

ng-pattern="/^(?!.{5})\d*\.?\d*$/"

您也可以将长度检查移出正则表达式:

ng-pattern="/^\d*\.\d*$/" ng-maxlength="4"

<强>详情

  • ^ - 字符串开头
  • (?!.{5}) - 如果输入字符串中有任何5个字符,则表示匹配失败的否定前瞻
  • \d* - 0+位数
  • \.? - 可选的.
  • \d* - 零个或多个数字(如果使用\d+,则 1 或更多数字)
  • $ - 字符串结束。

要禁止任何前导/尾随空格,请添加ng-trim="false"

答案 1 :(得分:0)

https://regex101.com/r/kF0hJ5/17

点击上面的链接,我希望它能为您提供帮助。很抱歉这里有评论链接。这样做,因为我的回购较少。

答案 2 :(得分:0)

我用这种方式解决了我的问题......

ng-pattern="/^\d\.\d{0,2}$/"