正则表达式验证字母数字或一组特殊字符

时间:2013-07-09 09:27:25

标签: java regex string

我要求确保字符串只包含字母数字或一组字符,如+(),'。 - = 我试过像

    String regex = "([a-zA-Z0-9]+)|([\\'|\\()|\\+|\\,|\\-|\\.|\\="]+)";
    System.out.println("Regex : " + regex);

    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(str);

    if (matcher.matches()) {
        System.out.println("Match");
    } else {
        System.out.println("Not Matching");
    }

它不起作用,任何人都可以帮助我

提前致谢

3 个答案:

答案 0 :(得分:4)

由于中间的OR,它看起来不会匹配包含字母数字和符号混合的整个字符串。

e.g。它不匹配abcABC()+,但会匹配abcABC并匹配()+

尝试:

([a-zA-Z0-9\\'\\(\\+\\)\\,\\-\\.\\=]+)

希望这有帮助!

答案 1 :(得分:3)

使用以下正则表达式:

^[-+=(),'.a-zA-Z0-9]+$

如果您想要允许零长度字符串,请将+替换为*

^[-+=(),'.a-zA-Z0-9]*$

答案 2 :(得分:0)

似乎您在

中遇到了编译问题
String regex = "([a-zA-Z0-9]+)|([\\'|\\()|\\+|\\,|\\-|\\.|\\="]+)";

因为"之前]结束字符串。如果要在该组字符中包含",则需要将其\"转义。如果没有,那么只需从正则表达式中删除它。

|内的[...]也会使其成为普通字符,而不是OR运算符,因此您无需在此处使用它。 BTW只有[...]中需要转义的特殊字符才是-


尝试一下

String regex = "([a-zA-Z0-9]+)|(['()+,\\-.=]+)";

或者如果您想将"包含在特殊字符中

String regex = "([a-zA-Z0-9]+)|(['()+,\\-.=\"]+)";