Angularjs 如何在正则表达式中只允许3位数字和一个点

Angularjs 如何在正则表达式中只允许3位数字和一个点,angularjs,regex,angular-material,ng-pattern,angularjs-ng-pattern,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-patt

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

马克/CGPA
插入有效的CGPA

如何在正则表达式中只允许3位数字和一个点?

您可以使用一个类似正则表达式的正则表达式

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”

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

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”

查看上面的链接,我希望它能帮助你。很抱歉在这里评论链接。这样做是因为我的回购较少。


查看上面的链接,我希望它能帮助你。很抱歉在这里评论链接。这样做是因为我的回购更少。

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

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

我已经这样解决了我的问题

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

谢谢Wiktor Stribiżew。你的代码对我来说不能正常工作。但我找到了解决办法。这是:ng pattern=“/^\d\。\d{0,2}$/”@monirthin,它不允许像
.123
这样的有效浮点数。而且,这与
12.4
不匹配。这将匹配
1.
(不知道这在这里是否重要)。我希望点(.)前面有一个数字,点(.)后面有两个数字,比如(2.50)。就这样,这个解决方案帮助了我。谢谢wiktor@monirtuhin这个问题没有确切的要求,所以我的回答是正确的。你的太狭隘了。如果我的答案有帮助,请随意投票。你的答案也帮助我确定了我的问题。谢谢汉克斯·维克托·斯特里比。你的代码对我来说不能正常工作。但我找到了解决办法。这是:ng pattern=“/^\d\。\d{0,2}$/”@monirthin,它不允许像
.123
这样的有效浮点数。而且,这与
12.4
不匹配。这将匹配
1.
(不知道这在这里是否重要)。我希望点(.)前面有一个数字,点(.)后面有两个数字,比如(2.50)。就这样,这个解决方案帮助了我。谢谢wiktor@monirtuhin这个问题没有确切的要求,所以我的回答是正确的。你的太狭隘了。如果我的答案有帮助,请随意投票。你的答案也帮助我确定了我的问题。谢谢
/^\d\。\d{0,2}$/
不允许像
.123
这样的有效浮点数。而且,这与
12.4
不匹配。这将匹配
1.
(不知道这在这里是否重要)。@Wiktor Stribiżew我想要点(.)前一位数字,点(.)后两位数字,比如(2.50)。就这样,这个解决方案帮助了我。谢谢
/^\d\。\d{0,2}$/
不允许像
.123
这样的有效浮点数。而且,这与
12.4
不匹配。这将匹配
1.
(不知道这在这里是否重要)。@Wiktor Stribiżew我想要点(.)前一位数字,点(.)后两位数字,比如(2.50)。就这样,这个解决方案帮助了我。谢谢