3 回答
TA贡献1834条经验 获得超8个赞
这是一种可能与您的代码一样有效的解决方案
const handlePhoneNumberFormat = (rules, value, callback) => {
if (value && value.match(phoneNumberRegex)) {
const pos = value.indexOf('-');
const length = value.length;
if (pos === 2 && length !== 10) {
callback('Please enter 7 digits after "-".');
} else if (pos === 3 && length !== 14) {
callback('Please enter 10 digits after "-".');
} else {
callback():
}
} else {
callback('');
}
};
没有重复,每个回调都是独一无二的……不过如果你想要更小的代码
const handlePhoneNumberFormat = (rules, value, callback) => {
const t = { "2": 10, "3": 14 };
if (value && value.match(phoneNumberRegex)) {
const pos = value.indexOf('-');
const a = t[pos] || 0;
if (a && a !== value.length) {
callback(`Please enter ${a - pos - 1} digits after "-".')`);
} else {
callback():
}
} else {
callback('');
}
};
虽然,并没有小得多,也更难阅读
TA贡献1864条经验 获得超6个赞
您的一种选择是在您的函数中使用三元运算符来定义您正在查看传递的值:
var returnValue;
returnValue = (value && value.match(phoneNumberRegex) && value.includes('-') && value.indexOf('-') === 2) ? 'Please enter 7 digits after "-".' : returnValue ;
callback(returnValue);
TA贡献1845条经验 获得超8个赞
您仍然可以使用 if elses 条件,但您必须结合一些代码,例如
value.indexOf('-') and value.includes('-') value && value.match(phoneNumberRegex)
和
value.indexOf('-') === 3 and value.length !== 14
使您的代码更短。
添加回答
举报