我有一个正则:var tamp = /^(1-9{0,7}|0)(.[d]{1,2})?$/;有一个input的oninput输入框事件通过它来验证验证输入的字符是否正确,在android上正常,在chrome上正常,但是在ios上,输入到“0.”的时候就不符合tamp正则了,同样的一个小数点,为什么android和chrome上正常,ios上就会报错呢?求解答
我有一个正则:var tamp = /^(1-9{0,7}|0)(.[d]{1,2})?$/;有一个input的oninput输入框事件通过它来验证验证输入的字符是否正确,在android上正常,在chrome上正常,但是在ios上,输入到“0.”的时候就不符合tamp正则了,同样的一个小数点,为什么android和chrome上正常,ios上就会报错呢?求解答
现在我的验证方式是不实时监听输入框的oninput事件,而是在用户输入完成后再去验证用户输入的格式,虽然也能用,但是测试妹子每次拿“0.00---”这样的输入字符来搞事情(仅管这类的非法输入最终提交的时候不会通过验证),我很郁闷。有谁有更好的方法,或者有更好的验证方式?请指教一下小弟啊
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答873 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
是这样的,在安卓和chrome下,
<input type="number">
的情况下,输入0.
的时候,会将这个值记为0
;而在iOS,会将这个值记为0.
。由于你后面匹配的是\.[\d]{1,2}
,小数点后必定要跟数,导致iOS匹配不成功,因而报错。另外,在
type="number"
的情况下,maxlength
属性不会生效。