Javascript 允许十进制比率的ng模式

Javascript 允许十进制比率的ng模式,javascript,angularjs,regex,ng-pattern,Javascript,Angularjs,Regex,Ng Pattern,我有一个ng模式,它验证了4:6的定量,如下所示: ng-pattern="/^(\d+):(\d+)$/" 我还想验证十进制数是否与上述验证一起作为定量输入。示例:5.4:7.1 通过将ng模式as ng-pattern="/^(\.[0-9]{1,2}+):(\.[0-9]{1,2}+)$/" 但是没有触发验证。请告诉我哪里出了问题。您的^(\.[0-9]{1,2}+)(\.[0-9]{1,2}+)$在JS中不是有效的模式,因为限制量词{min,max}后面不能跟+(JS regex引擎

我有一个
ng模式
,它验证了4:6的定量,如下所示:

ng-pattern="/^(\d+):(\d+)$/"
我还想验证十进制数是否与上述验证一起作为定量输入。示例:5.4:7.1 通过将
ng模式
as

ng-pattern="/^(\.[0-9]{1,2}+):(\.[0-9]{1,2}+)$/"
但是没有触发验证。请告诉我哪里出了问题。

您的
^(\.[0-9]{1,2}+)(\.[0-9]{1,2}+)$
在JS中不是有效的模式,因为限制量词
{min,max}
后面不能跟
+
(JS regex引擎不支持所有格量词)。即使删除加号并使用
^(\.[0-9]{1,2}):(\.[0-9]{1,2})$
,模式也会匹配字符串,如
.1:.3
.34:.45
,并且不允许
3:45
(点是必须的)

如果希望允许类似
.5
的值,请使用以下正则表达式:

ng-pattern="/^\d*\.?\d+:\d*\.?\d+$/"

或者,您可以使用

ng-pattern="/^(\d+\.)?\d+:(\d+\.)?\d+$/"
仅允许包含非空整数部分的数字。看