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

如何检测EditText输入文本中$[]#+.等特定字符的存在?

解决EditText输入字符检测问题

嘿,我来帮你搞定这个正则匹配的问题!

你之前的正则之所以没法匹配[和],是因为这两个字符在正则表达式里是元字符——它们用来定义「字符集」的范围,而不是代表字符本身。所以要匹配这两个字符,你需要用反斜杠\来转义它们。不过在Java字符串里,反斜杠本身也需要转义,所以得写成\\[和\\]。

方案一:修正正则表达式

把你的正则改成下面这样,就能正确匹配所有禁止的字符了:

// 转义方括号,确保正则能识别它们为普通字符
Pattern regex = Pattern.compile("[$\\[\\]. #+]");
if (regex.matcher(name).find()) {
    showDialog(this, "invalid");
}

方案二:不用正则,直接检查字符

如果你觉得正则的转义有点麻烦,也可以用更直观的方式——把所有禁止的字符放进一个字符数组,然后遍历输入文本逐个检查:

boolean hasInvalidChar = false;
// 定义所有需要检测的禁止字符
char[] forbiddenChars = {'$', '[', ']', '.', '#', '+'};

for (char c : name.toCharArray()) {
    for (char forbidden : forbiddenChars) {
        if (c == forbidden) {
            hasInvalidChar = true;
            break;
        }
    }
    if (hasInvalidChar) break; // 一旦找到就提前终止循环
}

if (hasInvalidChar) {
    showDialog(this, "invalid");
}

两种方法都能达到你的需求,选你觉得顺手的就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:57:44