年份验证



Helo,

我要输入信用卡到期日期的年份我如何为无效的4位数年份验证此输入,并且在更改时应仅接受4位数,并且应等于或大于当前年份的

const [year, setYear] = useState('');
function onSubmit(e) {
e.preventDefault();
dispatch(
addPayment({
card_holder: name,
card_number: creditCardNo,
expiration_month: month,
expiration_year: year,
card_type: creditCardType,
cvc: cvv,
}),
);
setCreditCardNo('');
setName('');
setCVV('');
setMonth('');
setYear('');
}
<div className={styles.sizeExtraSmall}>
<input
placeholder="Year"
onChange={(e) => setYear(e.target.value)}
required
value={year}
type="number"
/>
<CreditCardSVG className={styles.profileIcons} />
</div>

这里有两种方法,一种使用regex,另一种使用一个需要一年和可接受的年间隔的函数:

const
years = [1900, 2000, 25000, 2022, 2025, 2030],
regex = /20[2-9]d/;
current_year_or_greater_with_interval = 
(interval) => (year) => (year >= new Date().getFullYear()) 
&& (year <= new Date().getFullYear() + interval);
interval = 3;
for (year of years) {
console.log(year, current_year_or_greater_with_interval(interval)(year));
console.log(year, regex.test(year));
}

或者更干净、更容易阅读:

const 
now = new Date().getFullYear(),
years = [1900, 2000, 25000, 2022, 2025, 2030];
for (year of years) {
console.log(`---${year}---`);
console.log('expr (+ 100)', year >= now && year < now + 100);
console.log('regex', /20[2-9]d/.test(year));
}

相关内容

  • 没有找到相关文章

最新更新