php 正则只能数字和小数点后两位,如何用js限定文本框只能输入数字和小数点,且只能输入小数点后两位?...

自己研究了下,感觉这样写是不是可以?替换用户输入什么的,鬼知道用户会输入什么奇葩的字符串啊...我也是菜鸟,写的不好,互相学习...XD

$(document).on('keypress', '#id', function (e) {

// 在 keypress 事件中拦截错误输入

var sCharCode = String.fromCharCode(e.charCode);

var sValue = this.value;

if (/[^0-9.]/g.test(sCharCode) || __getRegex(sCharCode).test(sValue)) {

return false;

}

/**

* 根据用户输入的字符获取相关的正则表达式

* @param {string} sCharCode 用户输入的字符,如 'a','1','.' 等等

* @return {regexp} patt 正则表达式

*/

function __getRegex (sCharCode) {

var patt;

if (/[0]/g.test(sCharCode)) {

// 判断是否为空

patt = /^$/g;

} else if (/[.]/g.test(sCharCode)) {

// 判断是否已经包含 . 字符或者为空

patt = /((\.)|(^$))/g;

} else if (/[1-9]/g.test(sCharCode)) {

// 判断是否已经到达小数点后两位

patt = /\.\d{2}$/g;

}

return patt;

}

}).on('keyup paste', '#id', function () {

// 在 keyup paste 事件中进行完整字符串检测

var patt = /^((?!0)\d+(\.\d{1,2})?)$/g;

if (!patt.test(this.value)) {

// 错误提示相关代码,边框变红、气泡提示什么的

console.log('输入格式不正确!');

}

});

========================= 分割线 =========================

^((?!0)\d+(.\d{1,2})?)$

^ 表示开头

(?!0) 不能以 0 开头

\d+ 整数部分

(\.\d{1,2})? 小数部分,其中 (\.\d{1,2}) 表示小数点后两位,? 表示匹配零次或一次

$ 表示结尾

测试

bVlfYJ

一般都是输入错误了就弹出错误提示或者编辑框变红吧,直接修改用户的输入真的好么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值