需求
输入框内只能输入中英文和数字,而且还要限制最多输入长度为18。
方案
可以使用InputFilter
来过滤输入:
//限制只能输入中文,英文,数字
val accountFilter = InputFilter { source, start, end, dest, dstart, dend ->
val p = Pattern.compile("[0-9a-zA-Z|\u4e00-\u9fa5]+")
val m = p.matcher(source.toString())
if (!m.matches()) "" else null
}
//如果要限制输入字数,数组中同时加上InputFilter.LengthFilter(maxLength):
binding.etAccount.filters = arrayOf<InputFilter>(accountFilter,InputFilter.LengthFilter(20))