[^ \ 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