最近做小程序,有个需求,input只能输入数字,可含有一个小数点,保留后两位
如果按照之前的逻辑,获取input的值,然后在截取判断。比较麻烦,后台想到正则。但是不会用。简单的自学了下。还是不太懂。只能是简单的做个判断。不足之处还望大神指导。代码如下:
/**
* 价格监听
*/
buyprice: function(e) {
if (!this.NumberCheck(e.detail.value)) {
utils.showModal('只能输入数字,只能有一个小数点,小数点后面只能有2位')//我封装的方法,可见上一篇笔记
this.setData({
totle: 0 //如果是非法字符,把总价格赋值为0,
})
}
...如果是正常的话,继续你的表演。
}
/**
* 正则判断只能是数字并且保留后两位
*/
NumberCheck: function(num) {
var re = /^[0-9][1]*\.{0,1}\d{0,2}$/;
//简单的说下,^表示开始,$结束。[0-9]表示是0-9的数字,第一位只能是数字,[1]第二位,也就是说,第二位只能是1。如果不想限制前面的位数直接用“ \d* “就行。*\表示标记字符“.”{0,1}表示“.”个数为1,就是只能包含一个小数点。\d{0,2}表示小数点后两位。\d表示[0-9],也就是说,这小数点后两位只能是数字。
return re.exec(num) != null;
//exec() 方法用于检索字符串中的正则表达式的匹配。返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
},