【发布时间】:2019-04-29 02:23:00
【问题描述】:
在我的项目中,我有一个名为 Rate 的字段,它可以接受这些值: 例如:
- 2.32
- 2.32%
条件:
- 只允许数字。
- 小数点后只有两位数。
- 不允许使用字母和其他符号。
这是我正在使用的一段代码
handleCheck = (e)=> {
let onlyNums = e.target.value.replace(/[^0-9\.,%]/g, '');
var str = '';
var isperc = false;
if(onlyNums.indexOf('.') !== -1)
{
var arr = onlyNums.split(".");
if(arr[1].length >2)
{
if( arr[1].indexOf('%') !== -1)
isperc = true;
arr[1] = arr[1].slice(0, 2);
}
if(isperc)
e.target.value = arr[0] + '.' + arr[1] + '%';
else
e.target.value = arr[0] + '.' + arr[1];
}
if(onlyNums.indexOf('%') !== -1)
{
str = onlyNums.indexOf('%');
var start = (str + 1);
onlyNums = e.target.value.slice(0, start);
e.target.value=onlyNums;
}
}
上图显示了问题。 Rate 字段在输入小数点之前也接受字母。
我应该如何修改我的代码以避免这个问题?要么
我如何转换 \d+(\.\d\d)?%? 正则表达式,类似于我在问题中的 replace 函数中使用的那个,因为这个正则表达式不适用于我的代码
【问题讨论】:
-
你不能在你的所有测试中使用一个正则表达式吗?比如
\d+(\.\d\d)?%?? (regex101.com/r/vTkgMH/2) -
@Bhojendra Rauniyar 我已经像这样更改了我的代码
let onlyNums = e.target.value.replace(/\d+(\.\d\d)?%?/g, ''); e.target.value = onlyNums它没有按预期工作。问题是否与我在替换函数中使用正则表达式的方式有关?如果是,那么正确的语法是什么?
标签: javascript regex reactjs redux react-redux