javascript - 只允许 6 位数字或 8 位带 2 位小数的数字
问题描述
我创建了一个验证器,用于检查 digit 是否为数字,并确保小数点后允许有 2 位数字。这不包括一个没有小数位的 6 位数字 (123456) 或 2 个小数位的 8 位数字 (123456.78)。这就是我想出的
function validateInt2Dec(value, min, max) {
if (Math.sign(value) === -1) {
var negativeValue = true;
value = -value
}
if (!value) {
return true;
}
var format = /^\d+\.?\d{0,2}$/.test(value);
if (format) {
if (value < min || value > max) {
format = false;
}
}
return format;
}
及其正式实施
vm.fields = [
{
className: 'row',
fieldGroup: [
{
className: 'col-xs-6',
key: 'payment',
type: 'input',
templateOptions: {
label: 'Payment',
required: false,
maxlength: 8
},
validators: {
cost: function(viewValue, modelValue, scope) {
var value = modelValue || viewValue;
return validateInt2Dec(value);
}
}
}
]
}
];
我必须添加什么来涵盖上述情况?
解决方案
试试下面的正则表达式。
var regex = /^\d{1,6}(\.\d{1,2})?$/;
console.log(regex.test("123456"));
console.log(regex.test("123456.78"));
console.log(regex.test("123456.00"));
console.log(regex.test("12345.00"));
console.log(regex.test("12345.0"));
console.log(regex.test("12345.6"));
console.log(regex.test("12.34"));
console.log(regex.test("123456.789"));
推荐阅读
- windows - 如何使用 windows powershell 显示隐藏文件(dotfiles)
- java - 列表不添加日期java
- javascript - 如何将 HTML 导入 HTML 而不重复 head & body 标签?(如果可能,没有框架)
- elasticsearch - 多匹配 Elasticsearch 查询中的“property.whitespace”表示法
- angular - karma-jasmine-html-reporter@1.1.0 需要 jasmine@>=3 的对等方,但没有安装。
- javascript - 如何使用 Node.js 将 docx 文件打印到打印机
- javascript - 自定义索引时Javascript连接错误
- azure - 从 Azure 向手机号码发送消息
- python - pd.to_csv 用列表设置 float_format
- c# - 实体框架 - 更改默认值