如何检测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
相关产品推荐
相关产品推荐

