HarmonyOS 鸿蒙Next关于TextInput组件的inputFilter的用法请教
HarmonyOS 鸿蒙Next关于TextInput组件的inputFilter的用法请教
TextInput()
.type(InputType.Normal)
.placeholderColor(Color.Gray)
.maxLength(50) // 限制最大输入字符为50
.fontSize(19)
.inputFilter(’^[\u4e00-\u9fa5a-zA-Z0-9_-]+$’) // 只允许输入中英文以及-_
inputFilter里的正则表达式应该是没什么问题的,但是输入法是可以输入£€¥¢Π¶∆这些字符的,这要怎么处理
6 回复
TextInput({ placeholder: '请输入', text: $$this.message }) // 内部双向绑定
.type(InputType.Normal)
.placeholderColor(Color.Gray)
.maxLength(50) // 限制最大输入字符为50
.fontSize(19)
.inputFilter('[A-Za-z0-9_\\-\u4e00-\u9fa5]') // 只允许输入中英文以及-_
.onChange((value: string) => {
let reg: RegExp = new RegExp('[^\u4e00-\u9fa5a-zA-Z0-9_-]+$', 'g');
this.message = value.replace(reg, ''); // 将不符合输入要求的字符替换成空
})
```
只能用string.replace去处理了
有个笨方法,把这些字符排除掉
.inputFilter('^(?!.*[£€¥¢Π¶∆])[A-Za-z0-9\u4e00-\u9fa5\-_]+$')
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
我只是列举了这些特殊字符,可能还会有一些别的没碰到的
正则表达式对啊。 是不是跟测试环境, 模拟器输入法有关呢?