[^ \ u0009 \ u000A \ u000D \ u0020- \ uD7FF \ uE000- \ uFFFD \ uD800 \ uDC00- \ uDBFF \ uDFFF]java.util.regex.PatternSyntaxException:邻近索引非法字符范围71
的上面一行显示非法字符范围异常。谁能帮帮我吗。
如果我直接在java代码中使用上面的行,它不会显示任何错误。
Pattern xmlInvalidChars = Pattern.compile("[^\\u0009\\u000A\\u000D\\u0020-\\uD7FF\\uE000-\\uFFFD\uD800\uDC00-\uDBFF\uDFFF]");
但是,如果从配置xml文件中获取字符串并在java代码中使用,则显示错误。
String chars = ConfigLoader.getInstance().getInvalidCharacters();
Pattern xmlInvalidChars = Pattern.compile(chars);
问题出在'\ uDC00- \ uDBFF'上,这个范围是乱序的。你需要什么来匹配模式?也许你需要删除连字符来删除错误的范围?另外,您需要在XML中使用单个反斜杠。 –
As @WiktorStribiżew表示,请参阅https://en.wikipedia.org/wiki/UTF-8#Invalid_code_points – Simon