Java正则表达式:过滤掉键盘字符的最佳方法是什么?

时间:2015-03-15 02:47:50

标签: java regex

这是我的正则表达式,我用来从字符串中删除所有非键盘字符,即保留所有可以使用常规键盘输入的常规字符:

String test = "\u2665\n\t\r whatever"; 
String myregex = "[^\\p{L}\\p{Nd}\\,\\[\\]\\{\\}\\\\|\"\' `~!@#$%^&*()_+-=,./<>?\n\r\t]+"; 
System.out.println(test.replaceAll(myregex, ""));

有没有更好的方法呢?还有更紧凑的正则表达式,更高效的正则表达式吗?         我问,因为最初我没有这部分正则表达式\n\r\t,然后意识到用户可能会点击Enter,因此该部分缺少它。也许那里还有其他东西缺失?


基本上我要问的是:我们可以使用\\p{L}\\p{Nd}而不是列出所有数字和字母。是否有!@#$% . .等键盘字符的其他快捷方式?

1 个答案:

答案 0 :(得分:1)

您似乎可以按如下方式修改正则表达式。这将删除 ASCII 表中不是从 SPACE TILDE 的任何字符以及({的例外) {1}},CRLF)。

TAB