You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Kotlin正则表达式:限制输入合法金额(数字键盘含多余符号)

合法金额输入的Kotlin正则表达式方案

正则表达式说明

针对你需要限制输入框仅允许合法金额(整数或两位小数,无负号、空格等非法字符)的需求,推荐以下正则表达式:

val amountRegex = Regex("^(0|[1-9]\\d*)(\\.\\d{2})?$")

规则拆解

  • 整数部分:
    • 允许单个0(对应金额0)
    • 非零开头的数字串(避免00200这类前导零的无效格式;若业务允许前导零,可简化为\\d+)
  • 小数部分:
    • 可选存在,若存在则必须是.后跟恰好两位数字(匹配200.00这类格式,拒绝200.或200.1这类不完整小数)
  • 整体锚定:用^和$确保整个输入内容完全匹配规则,自动排除空格、减号等非法字符

输入验证示例

  • 合法输入:200、200.00、0、0.00、1234.56
  • 非法输入:-200、200 (带空格)、.00(无整数部分)、200.1(一位小数)、200.000(三位小数)、00200(前导零,若用上述正则则非法)

输入框实时过滤示例

如果需要通过TextWatcher实时拦截非法输入,可参考以下逻辑:

editText.addTextChangedListener(object : TextWatcher {
    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}

    override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}

    override fun afterTextChanged(s: Editable?) {
        val input = s?.toString() ?: ""
        if (input.isNotEmpty() && !amountRegex.matches(input)) {
            // 移除最后输入的非法字符
            s?.delete(input.length - 1, input.length)
        }
    }
})

内容的提问来源于stack exchange,提问作者Aditya Nandardhane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 02:03:18