在 JavaScript 中,使用正则表达式来判断金额是一种常见的需求。金额通常需要满足以下条件:
+
)或负号(-
),也可以没有符号。0
或 0.xx
)。以下是一个用于验证金额的正则表达式示例:
const amountRegex = /^-?\d+(\.\d{1,2})?$/;
^
和 $
:确保整个字符串都符合模式。-?
:可选的负号。\d+
:一个或多个数字(整数部分)。(\.\d{1,2})?
:可选的小数部分,.
需要转义为 \.
,后面跟 1 到 2 位数字。为了防止出现像 01
或 001.23
这样的无效金额,可以使用更严格的正则表达式:
const amountRegex = /^-?(0|[1-9]\d*)(\.\d{1,2})?$/;
^-?
:可选的负号。(0|[1-9]\d*)
:0
:允许金额为 0
。[1-9]\d*
:不允许前导零,第一位数字为 1-9,后面可以跟任意数量的数字。(\.\d{1,2})?
:可选的小数部分,限制为 1 到 2 位数字。以下是一个完整的示例,展示如何使用上述正则表达式来验证金额:
function isValidAmount(amount) {
const regex = /^-?(0|[1-9]\d*)(\.\d{1,2})?$/;
return regex.test(amount);
}
// 测试案例
const testAmounts = [
"123",
"-456.78",
"0",
"0.99",
"0123", // 无效
"-0.99",
"1234.567", // 无效
"12.3",
"-0",
"0.00"
];
testAmounts.forEach(amount => {
console.log(`${amount}: ${isValidAmount(amount)}`);
});
123: true
-456.78: true
0: true
0.99: true
0123: false
-0.99: true
1234.567: false
12.3: true
-0: true
0.00: true
0123
,不符合金额规范。0
)。123.456
,小数部分超过两位。\.\d{1,2}
。-?
,表示负号是可选的。^
开始到 $
结束,且只允许数字、小数点和可选的负号。通过使用上述正则表达式和验证逻辑,可以有效地确保金额输入的正确性和一致性,提升系统的健壮性和用户体验。
领取专属 10元无门槛券
手把手带您无忧上云