正则表达式确认可接受的输入

时间:2017-08-29 11:26:53

标签: java regex

我有KeyEvent.KEY_TYPED我在其上执行输入检查,在此期间我获得全文:

text = text + event.getCharacter();

但我需要确保只添加用户可以输入的可接受字符,包括所有数字,字母和特殊字符。已经应用程序应该支持英语,爱沙尼亚语和俄语,并且将来会添加更多语言。排除regexEsc等的Backspace应该是什么类型?

2 个答案:

答案 0 :(得分:1)

KEY_TYPED仅与视觉上显示为输入的键有关(因此键键入)。要操作(并禁止)按下控制键(如退格键),您应该查看其他事件,例如keyPressed和keyReleased。他们也会收到控制字符的通知。

来自KeyEvent javadoc

  

“键入类型”事件是更高级别的,通常不依赖于   平台或键盘布局。它们是在Unicode时生成的   输入字符,是了解的首选方式   字符输入。在最简单的情况下,生成键类型事件   通过单键按压(例如,'a')。然而,通常,角色是   由一系列按键产生的(例如,'shift'+'a')和   从按键事件到关键类型事件的映射可以是多对一的   或多对多。通常不需要密钥发布来生成   密钥类型事件,但在某些情况下键入的事件是   在密钥被释放之前不会生成(例如,输入ASCII序列)   通过Windows中的Alt-Numpad方法)。 没有键入的事件   为不生成Unicode字符的密钥生成(例如,   动作键,修饰键等。)

然而,从用户的角度来看,禁止例如退格确实存在问题。如果您想要走这条路线,请注意您已经考虑过所有相关的使用场景。由于keytyped事件没有得到任何控制字符,也许它已经在做你想要它做的事情。

答案 1 :(得分:1)

要匹配控件字符以外的任何字符,您可以使用

"\\P{Cc}"

"\\P{Cntrl}"