1

我需要确保字符串只有字母数字或一组字符,如 + ( ) 、 ' 。- = 我试过了

    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");
    }

Bt它不起作用,有人可以帮助我吗

提前致谢

4

3 回答 3

4

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

例如,它不会匹配 abcABC()+,但会匹配 abcABC 并且会匹配 ()+

尝试:

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

希望这可以帮助!

于 2013-07-09T09:31:14.117 回答
3

使用以下正则表达式:

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

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

^[-+=(),'.a-zA-Z0-9]*$
于 2013-07-09T09:32:10.990 回答
0

看来你有编译问题

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

因为你"之前]有结束字符串。如果您想包含"在该字符集中,您需要对其进行转义\"。如果不是,那么只需将其从您的正则表达式中删除。

|里面[...]也会使它成为普通字符,而不是 OR 运算符,所以你不需要在这里使用它。顺便说一句,唯一需要转义的特殊字符[...]-.


试试吧

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

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

String regex = "([a-zA-Z0-9]+)|(['()+,\\-.=\"]+)";
于 2013-07-09T10:00:02.333 回答