ios输入金额小数点时正则验证失败?

我有一个正则:var tamp = /^(1-9{0,7}|0)(.[d]{1,2})?$/;有一个input的oninput输入框事件通过它来验证验证输入的字符是否正确,在android上正常,在chrome上正常,但是在ios上,输入到“0.”的时候就不符合tamp正则了,同样的一个小数点,为什么android和chrome上正常,ios上就会报错呢?求解答

阅读 3.1k
2 个回答

是这样的,在安卓和chrome下,<input type="number">的情况下,输入0.的时候,会将这个值记为0;而在iOS,会将这个值记为0.。由于你后面匹配的是\.[\d]{1,2},小数点后必定要跟数,导致iOS匹配不成功,因而报错。
另外,在type="number"的情况下,maxlength属性不会生效。

现在我的验证方式是不实时监听输入框的oninput事件,而是在用户输入完成后再去验证用户输入的格式,虽然也能用,但是测试妹子每次拿“0.00---”这样的输入字符来搞事情(仅管这类的非法输入最终提交的时候不会通过验证),我很郁闷。有谁有更好的方法,或者有更好的验证方式?请指教一下小弟啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题