微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

日期验证问题

如何解决日期验证问题

我在验证日期格式时遇到问题: 如果我写“01/01-1987”我需要验证为错误的格式,它应该只接受“01/01/1987” || "01-01-1987" || “01 01 1987”。我怎样才能做到这一点? 我有以下代码

dateOfBirth: yup
    .string()
    .required(dob_EMPTY_FIELD)
    .test('invalid-length',dob_ERROR,value => value.length === 10)
    .test('invalid-date',value => {
      function compareFutureDate(date) {
        return isBefore(
          parse(
            date.replace(/[\/ ]/g,'-'),DATE_OF_BIRTH_VALUES.dateFormat,new Date()
          ),sub(new Date(),{ days: 1 })
        );
      }

      function comparePastDate(date) {
        return isAfter(
          parse(
            date.replace(/[\/ ]/g,new Date('12-31-1900')
        );
      }

      return compareFutureDate(value) && comparePastDate(value);
    })

解决方法

对于无效日期,您可以再添加 1 个测试方法,如下所示:

const isValidFormat = str => str.replace(/[^\/ -]/g,"")
                                .split('')
                                .every((e,_,a) => a[0] === e)

console.log('12-12-1994:',isValidFormat('12-12-1994'))
console.log('12/12-1994:',isValidFormat('12/12-1994'))
console.log('12-12 1994:',isValidFormat('12-12 1994'))
console.log('12/12/1994:',isValidFormat('12/12/1994'))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。