我正在尝试检查长度为 1 的字符串是否为以下字符之一:"["
、"\"
、"^"
、"_"
、单反引号 "`"
或 "]"
。
现在我正在尝试使用以下 if 语句来完成此任务:
if (character.matches("[[\\]^_`]")){
isValid = false;
}
当我运行程序时,我收到以下 if 语句错误:
java.util.regex.PatternSyntaxException: null (in java.util.regex.Pattern)
带有转义字符的正则表达式的正确语法是什么?
最佳答案
您的列表中有四个需要特别注意的字符:
^
是反转字符。它不能是字符类中的第一个字符,否则必须对其进行转义。\
是转义字符。必须对其进行转义才能直接使用。[
启动一个字符类,因此必须对其进行转义。]
结束一个字符类,因此必须对其进行转义。
这是“原始”正则表达式:
[\[\]_`\\^]
由于您将正则表达式表示为 Java 字符串文字,因此 Java 编译器必须另外对所有反斜杠进行转义:
if (character.matches("[\\[\\]_`\\\\^]")){
isValid = false;
}
关于java - 如何正确为带有转义字符的 String.matches() 创建正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33369017/