Javascript 角度正则表达式验证器未完全工作
我已经为纬度输入创建了下面的验证器(在-90和90之间,不包括特殊字符(e、+、等等))。我已经测试了正则表达式,它是有效的。但是,当我在输入上使用它时,它只验证数字范围并允许使用特殊字符(例如“12e”) : 非常感谢您的帮助。Javascript 角度正则表达式验证器未完全工作,javascript,regex,angular,Javascript,Regex,Angular,我已经为纬度输入创建了下面的验证器(在-90和90之间,不包括特殊字符(e、+、等等))。我已经测试了正则表达式,它是有效的。但是,当我在输入上使用它时,它只验证数字范围并允许使用特殊字符(例如“12e”) : 非常感谢您的帮助。 BT7如果要检查值是否介于-90和90之间(包括-90和90),那么首先不应该使用正则表达式 let val = parseFloat(formControl.value) return !!val && val == formControl.va
BT7如果要检查值是否介于-90和90之间(包括-90和90),那么首先不应该使用正则表达式
let val = parseFloat(formControl.value)
return !!val && val == formControl.value && val >= -90 && val <= 90 ? null : { ...
let val=parseFloat(formControl.value)
返回!!val&&val==formControl.value&&val>=-90&&val您可以创建一个plnkr/小提琴来显示问题吗?formControl.value
包含什么?“12e”与regex()不匹配,因此它应该返回一个错误。在我下面的回答中,regex似乎不是适合此工作的工具。但是,如果您要坚持使用这种方法,那么这应该是您所使用的方法的更简洁版本:/^-(?:[0-9]|[1-8][0-9]|90)(?:\.[0-9]{1,6})$/
。但是,如果您遇到了类似于12e
的问题,那么问题似乎更像是您的错误处理/过滤,而不是正则表达式本身。
let val = parseFloat(formControl.value)
return !!val && val == formControl.value && val >= -90 && val <= 90 ? null : { ...