我目前正在编写一个验证器,我需要检查浮动的格式。我的代码以(x,y)格式读取,其中x是float中可能的总数,y是x之后可以在小数点之后的最大数字。如果以前已经回答过这个问题,我会道歉,但我找不到类似的东西。
例如,给定格式为(5,3):
有效值
webEngine.setUserAgent("foo\nAuthorization: Basic YourBase64EncodedCredentials");
无效的值
55555
555.33
55.333
5555.3
.333
这是我第一次使用正则表达式,所以如果你们有任何你推荐的教程,请发送给我!
答案 0 :(得分:3)
您可以使用前瞻来确保这两种情况,例如
^(?=(?:\.?\d){1,5}$)\d*(?:\.\d{1,3})?$
^
匹配字符串的开头(?=(?:\.?\d){1,5}$)
检查字符串末尾是否存在1到5位数字 - 不关心正确的点数\d*
匹配任意位数(?:\.\d{1,3})?
最多匹配3位小数$
确保字符串结束答案 1 :(得分:1)
假设JS你可以尝试
function validate(value, total, dec) {
let totalRegex = new RegExp(`\\d{0,${total}}$`);
let decimalRegex = new RegExp(`\\.\\d{0,${dec}}$`);
return totalRegex.test(value.replace(".","")) && (!(/\./.test(value)) || decimalRegex.test(value));
}
console.log(validate("555.55", 5, 2));
console.log(validate("55.555", 5, 2));
console.log(validate("5.5", 5, 2));
console.log(validate("55555", 5, 2));
console.log(validate("5.5555", 5, 2));