要确保用户输入为 $XX.XX
格式,或者 $XX
格式并将其转换为两个十进制浮点数,可以使用正则表达式进行验证和处理。以下是一个详细的解决方案:
使用正则表达式来验证输入是否符合 $XX.XX
或 $XX
格式。
如果输入是 $XX
格式,将其转换为 $XX.00
格式。
function validateAndConvertInput(input) {
// 正则表达式匹配 $XX.XX 或 $XX 格式
const regex = /^\$(\d{1,2})(?:\.(\d{2}))?$/;
const match = input.match(regex);
if (!match) {
throw new Error("输入格式不正确,应为 $XX.XX 或 $XX");
}
let dollars = parseInt(match[1], 10);
let cents = match[2] ? parseInt(match[2], 10) : 0;
// 转换为两个十进制浮点数
const result = {
dollars: dollars,
cents: cents
};
return result;
}
// 示例用法
try {
const input1 = "$12.34";
const result1 = validateAndConvertInput(input1);
console.log(result1); // 输出: { dollars: 12, cents: 34 }
const input2 = "$56";
const result2 = validateAndConvertInput(input2);
console.log(result2); // 输出: { dollars: 56, cents: 0 }
} catch (error) {
console.error(error.message);
}
/^\$(\d{1,2})(?:\.(\d{2}))?$/
^
和 $
确保整个字符串匹配。\$(\d{1,2})
匹配 $
后面跟着1到2位数字。(?:\.(\d{2}))?
是一个非捕获组,匹配可选的小数部分,小数点后必须有两位数字。通过这种方式,可以有效地验证和处理用户输入,确保数据的准确性和一致性。
领取专属 10元无门槛券
手把手带您无忧上云