我要求确保字符串只包含字母数字或一组字符,如+(),'。 - = 我试过像
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");
}
它不起作用,任何人都可以帮助我
提前致谢
答案 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]+)|(['()+,\\-.=\"]+)";