繁体   English   中英

Java不区分大小写的正则表达式值

[英]Regex Value for Java Case Insensitive

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

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

我正在传递文本“测试”,但输出的文本包含特殊字符。 但是,只要我通过小“ t”的“测试”,我就不会出错。

码:

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

将您的-移到字符类的末尾或对其进行转义:

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

并且可以删除(?i) ,因为您的模式未指定任何大小写不同的字符。

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

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

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

因此,您需要移动-以开始符号组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM