Java Case Insensitive的正则表达式值

时间:2014-10-29 06:53:02

标签: java regex

我写了一个正则表达式来捕捉文本中的任何特殊字符。

regular expression: (?i)[$&+,:;=?@#|'<>.-^*()%!]

我正在传递文字&#34;测试&#34;但得到文本包含特殊字符的输出。但是一旦我通过,&#34;测试&#34;小&#34; t&#34;,我没有错误..你能帮忙吗?

代码:

String REGEX = "(?i)[$&+,:;=?@#|'<>.-^*()%!]";
String fieldValue="Testing";
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(REGEX);
java.util.regex.Matcher matcher = pattern.matcher(fieldValue);
if (matcher.find()) {
    String strWarningMessage = "Field value cannot contain Special Characters";
    System.out.println(strWarningMessage);
}
else
    System.out.println("OK");

2 个答案:

答案 0 :(得分:1)

-移到角色类的末尾或将其转义:

"[$&+,:;=?@#|'<>.^*()%!-]"

可以删除(?i),因为您的模式没有指定任何具有不同情况的字符。

在原始正则表达式中,.-^指定了从.(U + 002E)到^(U + 005E)的字符范围,其中包含大写A-Z和数字0-9

答案 1 :(得分:1)

您的问题是字符-。 当符号组[...]包含此字符时,有两种可能的解释:

  • 符号-(当它放在[之后的第一个位置时)
  • 符号范围(当它放在[之后的任何位置,除了第一个)

所以你需要移动-来开始符号组。