Javascript 当用户在Angular中使用正则表达式仅输入0或0.0时,如何显示错误消息?
我对输入字段有特殊要求Javascript 当用户在Angular中使用正则表达式仅输入0或0.0时,如何显示错误消息?,javascript,html,angularjs,regex,Javascript,Html,Angularjs,Regex,我对输入字段有特殊要求 它不应该允许值0,但应该允许值0.123、0.1、1.0 它不应该允许任何字符串 使用正则表达式可以实现这一点吗?或者我需要编写一个自定义JavaScript函数来验证条件 这就是我尝试过的 ng-pattern="/^[0-9]+([.][0-9]+)?$/ Fiddler Link您可以通过在正则表达式中添加一个负前瞻来限制输入: ng-pattern="/^(?!0+(?:\.0+)?$)[0-9]+([.][0-9]+)?$/"
- 它不应该允许值0,但应该允许值0.123、0.1、1.0
- 它不应该允许任何字符串 使用正则表达式可以实现这一点吗?或者我需要编写一个自定义JavaScript函数来验证条件
ng-pattern="/^[0-9]+([.][0-9]+)?$/
Fiddler Link您可以通过在正则表达式中添加一个负前瞻来限制输入:
ng-pattern="/^(?!0+(?:\.0+)?$)[0-9]+([.][0-9]+)?$/"
^^^^^^^^^^^^^^^^
(?!0+(?:\.0+?$)
如果用户键入零(可选后跟,
+零),则反向前瞻将导致匹配失败(并将导致出现错误消息)
更多详细信息:
-字符串的开头^
-不能有一个或多个零可选地跟在(?!0+(?:\.0+?$)
+一个或多个零后面
-1+位[0-9]+
-可选的([.][0-9]+)?
+1+位序列
-字符串结束李>$
试试
ng pattern=“/^(?0+(?:\.0+)?$)[0-9]+([.][0-9]+)?$/”
。谢谢。它起作用了@WiktorStribiżewgreat回答,你能解释一下非捕获组(?:\.0+)
与正常组([.][0-9]+)?
的区别吗?这只是一种习惯:非捕获组((?:…)
)不将捕获的文本存储在内存缓冲区中,而捕获组((…)
)将。所以,这是一个纳米优化,如果你认为它更可读,你可以使用一个捕获组。谢谢你的详细解释@WiktorStribiżew