Java正则表达式匹配

时间:2012-07-19 15:42:28

标签: java regex

我有一种方法可以在评论文本字段中检查我的用户输入。

public boolean isValidComment(String commentString) {
  String expression = "[a-zA-Z0-9_ ]+";
  CharSequence inputStr = commentString;
  Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
  Matcher matcher = pattern.matcher(inputStr);
  return matcher.matches();
}

这适合我,但我需要改变我的模式。用户应该能够键入任何字符,但这些字符除外:<> {} []

如何设置模式以允许除上述之外的所有内容?

3 个答案:

答案 0 :(得分:4)

[^characters to disallow]

^否定了字符类,除了里面的内容之外什么都匹配。

答案 1 :(得分:4)

试试这个:

[^\<\>\{\}\[\]]+

另一方面,你需要使用Pattern的常量来避免每次都重新编译表达式,如下所示:

private static final Pattern MY_PATTERN = 
                                     Pattern.compile("^[^\\<\\>\\{\\}\\[\\]]+$");

并使用常量:

return MY_PATTERN.matcher(commentString).matches();

答案 2 :(得分:0)

尚未测试,但格式为: 字符串表达式= "[^\\\<\\\>\\\{\\\}\\\[\\\]]+" ^符号适用于所有字符,但以下是。