【问题标题】:How to allow only 3 digit and one dot in Regular Expression如何在正则表达式中只允许 3 位数字和 1 个点
【发布时间】:2017-07-31 10:53:40
【问题描述】:

我想这样做: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 个点?

【问题讨论】:

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


    【解决方案1】:

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

    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"

    【讨论】:

    • 感谢 Wiktor Stribiżew。你的代码对我来说不能正常工作。但我找到了解决方案。这是:ng-pattern="/^\d\.\d{0,2}$/"
    • @monirtuhin 这不允许像.123 这样的有效浮点数。此外,这与12.4 不匹配。这将匹配1.(不知道这在这里是否重要)。
    • 我想要 dot(.) 之前的一位数和 dot(.) 之后的两位数,例如 (2.50) 。通过这种方式,这个解决方案帮助了我。谢谢维克托
    • @monirtuhin 这个问题没有确切的要求,所以我的回答是有效的。你的太受限制了。如果我的回答有帮助,请随时点赞。
    • 您的回答也帮助我发现了我的问题。谢谢
    【解决方案2】:

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

    查看上面的链接,希望对您有所帮助。抱歉在这里评论链接。这样做是因为我的 repo 较少。

    【讨论】:

      【解决方案3】:

      我已经通过这种方式解决了我的问题......

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

      【讨论】:

      • /^\d\.\d{0,2}$/ 不允许像.123 这样的有效浮点数。此外,这与12.4 不匹配。这将匹配1.(不知道这在这里是否重要)。
      • @Wiktor Stribiżew 我想要点(.)之前的一位数和点(.)之后的两位数,例如 (2.50) 。通过这种方式,这个解决方案帮助了我。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      相关资源
      最近更新 更多