我正在尽力为我的正则表达式问题找到解决方案,但失败了。 当输入不是浮点数时,我想用空白(实时)替换输入。
这就是我对整数输入所做的。
$(document).on("keyup", ".onlyInteger", function(event){
if (!(event.keyCode >=37 && event.keyCode<=40)) {
var inputVal = $(this).val();
inputVal = inputVal.replace(/[^0-9]/gi,'');
$(this).val( addComma(inputVal) );
}
});
我想将此代码用''替换非浮点输入,但找不到浮点数的负正则表达式。
我想要得到的结果。
10,000 --> true
10 --> true
0.1 --> true
1.23234 --> true
1,231.123 --> true
0.000001 --> true
1.000 --> true
. at the beginning --> false (replace with blank)
0001.2 --> false (replace with blank)
-1.01 --> false (replace with blank)
+2.3 --> false (replace with blank)
characters --> false (replace with blank)
1.1.1.1 --> false (replace with blank)
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
尝试regex ^(([0-9,]+)|(([1-9,]+|0)\.\d+))$
。
const regex = /^(([0-9,]+$)|(([1-9,]+|0)\.\d+))$/gm
const str = '10'
const numbers = regex.test(str) ? str : ''
console.log(numbers)
答案 1 :(得分:0)
使用B
可以满足您的需求。
这是一个简单的测试:
^(([1-9]+0{0,})|([1-9]\d?(\,\d{3}){0,})|0)(\.\d+)?$
您可以简单地用模式测试输入值,如果没有通过,则从输入中删除该值。
此外,我建议使用var casesShouldPass = [
"10,000",
"10",
"0.1",
"1.23234",
"1,231.123",
"0.000001",
"1.000",
// I think the followings should pass
"1,234,567",
"1,234,567.00",
"123456",
"12345.3",
"10.3",
"100.4",
"13",
"0",
"9",
"1,230,333,444,555,666.2"
];
var casesShouldFail = [
".",
".123",
"0001.2",
"-1.01",
"+2.3",
"abc",
"1.1.1.1",
// I think the followings should fail
"1,23",
"1,2",
"1,",
"0,111",
"0.",
"a.0",
"0.abc",
];
var body = document.querySelector("body");
var regex = /^(([1-9]+0{0,})|([1-9]\d?(\,\d{3}){0,})|0)(\.\d+)?$/;
var testFunc = (arr) => {
for (var i = 0; i < arr.length; i++) {
var result = regex.test(arr[i]);
body.innerHTML += `${arr[i]} : ${result}<br>`;
}
body.innerHTML += `<br>`;
}
testFunc(casesShouldPass);
testFunc(casesShouldFail);
而不是change
,您可以在此代码段中尝试一下。
keyup
var regex = /^(([1-9]+0{0,})|([1-9]\d?(\,\d{3}){0,})|0)(\.\d+)?$/;
$(document).on("keyup", ".onlyInteger_keyup", function(event) {
if (!(event.keyCode >= 37 && event.keyCode <= 40)) {
var inputVal = $(this).val();
if (!regex.test(inputVal)) {
$(this).val("");
}
}
})
$(document).on("change", ".onlyInteger_change", function(event) {
if (!(event.keyCode >= 37 && event.keyCode <= 40)) {
var inputVal = $(this).val();
if (!regex.test(inputVal)) {
$(this).val("");
}
}
})