[英]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.