我想验证一组对象的有效时间值
I want to validate an array of objects for valid time values
我正在尝试验证以下对象数组:
[{from: '10:00', to: '16:00'}, null, {from: '09:00', to: '16:00'}, etc. ]
我想要那个数组中正好有 7 个对象,我该如何验证?我想同时添加 .min(7)
和 .max(7)
并不是最佳做法。我怎样才能让 NULL
值也通过?
另外这部分好不好,或者你会改变什么吗?我是 JavaScript.
的新手
schedule: array().of(
object().shape({
from: string()
.required()
.matches(/^(0[0-9]|1[0-9]|2[0-3]):(00|30)$/),
to: string()
.required()
.matches(/^(0[0-9]|1[0-9]|2[0-3]):(00|30)$/),
})
),
使用验证 is()
属性。这是文档 link:https://validatejs.org/#validators-length
要将某些内容检查为简单的时间值,即 12:34
,您可以使用此正则表达式:/^[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/
。代码:
var item = '10:00';
console.log(item.match(/^[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/));
^
: 表示字符串的开始。
[0-5]
: 某个字符0到5.
[0-5]{1}
: 某个字符 0 到 5,并且恰好是其中一个。
[0-9]
: 从0到9的某个字符。
[0-9]{1}
: 0 到 9 中的某个字符,并且恰好是其中之一。
[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}
:介于 00:00 和 59:59 之间。
$
:表示字符串结束。
我已经为你的数据结构实现了它。注意:我添加了一个假值,所以我们可以看到它实际上表示无效。
var items = [
{from: '10:00', to: '16:00'},
null,
{from: '09:00', to: '16:00'},
{from: '09:00', to: '16:001234'}
];
items.forEach((item) => {
logstring = "Item : ";
if(!item) {
logstring += 'NULL/VALID';
} else {
logstring += item.from + " " ;
if(item.from.match(/^[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/)) {
logstring += 'VALID';
} else {
logstring += 'INVALID';
}
logstring += ', ' + item.to + " " ;
if(item.to.match(/^[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/)) {
logstring += 'VALID';
} else {
logstring += 'INVALID';
}
}
console.log(logstring);
});
我正在尝试验证以下对象数组:
[{from: '10:00', to: '16:00'}, null, {from: '09:00', to: '16:00'}, etc. ]
我想要那个数组中正好有 7 个对象,我该如何验证?我想同时添加 .min(7)
和 .max(7)
并不是最佳做法。我怎样才能让 NULL
值也通过?
另外这部分好不好,或者你会改变什么吗?我是 JavaScript.
的新手schedule: array().of(
object().shape({
from: string()
.required()
.matches(/^(0[0-9]|1[0-9]|2[0-3]):(00|30)$/),
to: string()
.required()
.matches(/^(0[0-9]|1[0-9]|2[0-3]):(00|30)$/),
})
),
使用验证 is()
属性。这是文档 link:https://validatejs.org/#validators-length
要将某些内容检查为简单的时间值,即 12:34
,您可以使用此正则表达式:/^[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/
。代码:
var item = '10:00';
console.log(item.match(/^[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/));
^
: 表示字符串的开始。[0-5]
: 某个字符0到5.[0-5]{1}
: 某个字符 0 到 5,并且恰好是其中一个。[0-9]
: 从0到9的某个字符。[0-9]{1}
: 0 到 9 中的某个字符,并且恰好是其中之一。[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}
:介于 00:00 和 59:59 之间。$
:表示字符串结束。
我已经为你的数据结构实现了它。注意:我添加了一个假值,所以我们可以看到它实际上表示无效。
var items = [
{from: '10:00', to: '16:00'},
null,
{from: '09:00', to: '16:00'},
{from: '09:00', to: '16:001234'}
];
items.forEach((item) => {
logstring = "Item : ";
if(!item) {
logstring += 'NULL/VALID';
} else {
logstring += item.from + " " ;
if(item.from.match(/^[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/)) {
logstring += 'VALID';
} else {
logstring += 'INVALID';
}
logstring += ', ' + item.to + " " ;
if(item.to.match(/^[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/)) {
logstring += 'VALID';
} else {
logstring += 'INVALID';
}
}
console.log(logstring);
});