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

Jetpack Compose TextField正则限制:仅允许数字、逗号和单个点

解决Jetpack Compose TextField限制仅输入数字、逗号和单个点的问题

你当前的正则表达式[\d,.]+没有限制点的出现次数,所以会允许多个点输入。要实现仅允许数字、逗号和单个点的需求,需要调整正则表达式,确保整个输入字符串中点的数量不超过1个。

修正后的正则表达式

替换原正则为:

val expression = Regex("^[\\d,]*\\.?[\\d,]*$")

这个正则的规则:

  • ^ 和 $ 确保匹配整个输入字符串
  • [\\d,]* 允许0个或多个数字/逗号
  • \\.? 允许0个或1个点(转义\是因为点在正则中是特殊字符)
  • 整体保证输入内容只能包含数字、逗号,且最多一个点

修改后的完整代码

val expression = Regex("^[\\d,]*\\.?[\\d,]*$")

val keyboardOptions = KeyboardOptions(
    keyboardType = KeyboardType.Number,
    imeAction = ImeAction.Done
)

TextField(
    value = text,
    onValueChange = {
        if (it.isEmpty() || it.matches(expression)) {
            onValueChange(it)
        }
    },
    keyboardOptions = keyboardOptions,
    keyboardActions = KeyboardActions(
        onDone = {  }
    ),
)

如果需要更严格的格式约束(比如点不能单独出现、逗号后必须跟数字等),可以进一步调整正则,但上述代码已满足你“仅数字、逗号或单个点”的核心需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:05:56