如何使用java regex检测一个字符串包含多个字符之一

时间:2013-06-20 20:29:01

标签: java regex

我有一个可变长度的字符串,我只是想检测这个字符串是否包含多个字符。例如:

"sadsdd$sss^dee~"

我想检测此字符串是否包含以下任何内容:$ ^ ~。我怎么能用Java string.matches

来做到这一点
"sadsdd$sss^dee~".matches("[^+$+~+]");

3 个答案:

答案 0 :(得分:5)

使用模式和匹配器:

Pattern pattern = Pattern.compile("[$~^]");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
   // contains special characters
} else {
   // doesn't contain special characters
}

答案 1 :(得分:1)

如果你真的必须使用matches,那就试试这个

myString.matches(".*[$^~].*");

matches检查正则表达式是否可以完全匹配字符串,所以除了您感兴趣的部分之外,还需要让它匹配前后的部分,.*应该处理。

答案 2 :(得分:1)

如何检测一个字符串是否包含另一个字符串中的多个字符之一:

如果您想要快速解决方案:

public static void main(String[] args) {
    System.out.println(containsChars("sadsdd$sss^dee~", "$^~"));
}

public static boolean containsChars(String str, String chars) {
    for (int i = 0; i < chars.length(); i++) {
        char c = chars.charAt(i);
        for (int j = 0; j < str.length(); j++) {
            if (c == str.charAt(j)) {
                return true;
            }
        }
    }
    return false;
}

当然不像正则表达式那么小或优雅,但它很快。