Java RegEx - 非法字符点

Aic*_*ich 3 java regex string

String filter = "a-zA-Z0-9äöüÄÖÜß-\\.";
"^[^" + filter + "]*$", ""

inputtext.replaceAll("^[^" + filter + "]*$", "");
Run Code Online (Sandbox Code Playgroud)

这个Java RegEx过滤器应该从inputtext中删除除过滤器中的字符之外的所有字符,但是我得到一个异常,说明不允许使用该点.我已经用两个斜线逃脱了点.怎么了?

mor*_*rja 7

移动-到最后:

String filter = "a-zA-Z0-9äöüÄÖÜß.-";
Run Code Online (Sandbox Code Playgroud)

短划线表示字符范围,点不是范围的有效结束.您也不想在那里定义范围.将它移到最后可以解决问题.

顺便说一句.如果要删除与过滤器不匹配的所有字符,则需要更改替换:

inputtext = inputtext.replaceAll("[^" + filter + "]", "");
Run Code Online (Sandbox Code Playgroud)

你拥有它的方式,它只会替换所有字符都不在该类中.