javascript - Javascript中的正则表达式来解析onKeyDown的输入

标签 javascript regex

我正在使用 onKeyDown 和正则表达式来解析键盘输入。我需要它到所有 A-Z、退格键和问号。问题来自 ?,我无法接受它。我努力了 /[A-Z\x08?]/
/[A-Z\x08\?]/
/[A-Z\x08\\?]/
/[A-Z\x08\x3F]/

没有一个允许 ?被接受。

function kd(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode(key);
    var regex = /[A-Z\x08]/;
    if (!regex.test(key)) {
        theEvent.returnValue = false;
        if (theEvent.preventDefault) theEvent.preventDefault();
    }
}

如有任何帮助,我们将不胜感激。

最佳答案

问号应该放在 character class 里面:

/[A-Z\x08?]/

另一个问题是您应该使用 onkeypress 来确定键入的是哪个字符。 onkeyuponkeydown 事件只告诉您按下和释放了哪些键,但没有说明这些对应的字符。在不同的键盘上,您必须按不同的键才能生成相同的字符。

例如,在我的键盘上,我必须按 Shift+ 才能得到 ?。在美式键盘上,您通常必须按 Shift/ 才能得到 ?。由于键盘布局的这种差异,使用 onkeyup 和 onkeydown 事件来检测 ? 是不可靠的。

关于javascript - Javascript中的正则表达式来解析onKeyDown的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14035033/

相关文章:

JavaScript 书籍问题

javascript - 如何在javascript中替换字符串中的\Z

java - 如何在 java 中使用正则表达式查找字符串中最后一次出现的字符集?

javascript - 正则表达式匹配字符串中的字母和数字,可选地具有一组特殊字符

javascript - 使用 .css 移动对象后,重置所有可放置对象以允许可拖动对象

javascript - 解析多个页面而不改变url地址

javascript - JQuery 在多个插件后改变宽度

javascript - 如何在 Node JS 中生成十六进制编码的 CMAC-AES 摘要?

Ruby Regex 舍入尾随零

正则表达式,用于在Eclipse中匹配 "non-javadoc"注释