我需要在我的项目中设置某些约束,特别是在正则表达式中,以限制用户输入并对其进行适当的格式化。这些规则旨在在我的 Jetpack Compose 项目中的 TextField 组件中实现。
规则:
示例:(这些示例仅供参考。)
我尝试了下面的代码,但这没有按预期工作。
var text by remember { mutableStateOf("") }
val regex = remember { Regex("^(?!0|\\.)(?!.*\\.\\.)\\d{1,4}(\\.\\d{1,2})?$") }
TextField(
label = R.string.label_days,
value = text,
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Number
),
onValueChange = { days ->
if (days.isEmpty() || regex.matches(days)){
text = days
}
})
下面的代码将满足您的要求
var text by remember { mutableStateOf("") }
val regex = remember { Regex("^(?!0)(?!.*\\.\\..*|\\.$)\\d{0,4}(\\.\\d{0,2})?\$") }
TextField(
label = {
Text(text = "Days")
},
value = text,
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Number
),
onValueChange = { days ->
if (days.isEmpty() || days.matches(regex)) {
text = days
}
}
)