AngularJS ng-pattern配置:匹配1或2位数字(0-59分钟格式)
解决AngularJS ng-pattern匹配0-59分钟的问题
首先得指出你现有代码里的正则有两处问题:一是语法错误(括号没闭合),二是逻辑上只能匹配两位数字,没法满足1位数字的需求,还会允许超过59的数值(比如99)。结合你要支持0/00到59的分钟格式需求,我给你调整一下方案:
正确的正则表达式
我们需要匹配两种合法情况:
- 单个数字0-9(比如
0、5)或者带前导0的两位数字(比如00、09) - 10到59的两位数字(比如
15、59)
对应的正则是:/^(0?[0-9]|[1-5][0-9])$/
修正后的完整代码
把原input的max改成59(因为分钟最大是59,原max="60"不符合规则),同时替换正确的ng-pattern:
<input type="text" step="any" value="" ng-model="job.valueIntervalo" min="0" max="59" ng-pattern="/^(0?[0-9]|[1-5][0-9])$/"/>
额外说明
如果你不想允许带前导0的两位数字(比如只接受0而不是00),可以把正则改成:/^([0-9]|[1-5][0-9])$/,这样就只会匹配0-9的单个数字和10-59的两位数字。
另外,min和max属性和ng-pattern配合使用,能做双重验证:既限制输入的数值范围,又确保格式符合要求,用户体验会更顺畅。
内容的提问来源于stack exchange,提问作者Bruno Souza
相关产品推荐
相关产品推荐

