我写了一个正则表达式来捕捉文本中的任何特殊字符。
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");
答案 0 :(得分:1)
将-
移到角色类的末尾或将其转义:
"[$&+,:;=?@#|'<>.^*()%!-]"
可以删除(?i)
,因为您的模式没有指定任何具有不同情况的字符。
在原始正则表达式中,.-^
指定了从.
(U + 002E)到^
(U + 005E)的字符范围,其中包含大写A-Z
和数字0-9
。
答案 1 :(得分:1)
您的问题是字符-
。
当符号组[...]
包含此字符时,有两种可能的解释:
-
(当它放在[
之后的第一个位置时)[
之后的任何位置,除了第一个)所以你需要移动-
来开始符号组。