baidu_37617089 2022-08-19 14:43 采纳率: 70%
浏览 10
已结题

Android输入框正则表达式验证的问题

我想做的是输入框里面部分特殊符号不允许输入。

private boolean isSymbol(String input){
    Pattern pattern = Pattern.compile("[`~!@#$^&*_+=|{}':;,\\[\\]<>/?!¥…()—·‘:”“’?]|[\u3010-\u3011]|[\u007d-\u007e]|[\u0060]|[\u00b7]|[\u007b]|[\\u005c]");
    Matcher matcher = pattern.matcher(input);
    return matcher.find();
}


inputtext1.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int before, int count) {}

    @Override
    public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
        if (count - before >= 1) {
            CharSequence input = charSequence.subSequence(start + before, start + count);
            if (isSymbol(input.toString())) {
                toast("不支持特殊符号");
                ((SpannableStringBuilder) charSequence).delete(start + before, start + count);
             }
        }
    }

    @Override
    public void afterTextChanged(Editable editable) { }
});

执行后出现的问题有
1、中文的~这个按键的三种字符都不能识别,还是可以输入(· ~ `)
2、中文的{ }也是仍然可以输入

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 8月27日
    • 修改了问题 8月19日
    • 创建了问题 8月19日

    悬赏问题

    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀
    • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
    • ¥15 关于#hadoop#的问题
    • ¥15 (标签-Python|关键词-socket)
    • ¥15 keil里为什么main.c定义的函数在it.c调用不了
    • ¥50 切换TabTip键盘的输入法
    • ¥15 可否在不同线程中调用封装数据库操作的类
    • ¥15 微带串馈天线阵列每个阵元宽度计算