You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS中含\b的字母正则导致退格键无法正常工作的原因

问题原因及解决办法

为什么退格键被过滤?

核心问题是你搞混了退格键的e.key值和正则里\b的含义:

  • 按退格键触发keydown事件时,e.key返回的是字符串"Backspace",不是你以为的转义字符\b。
  • 正则里的\b在字符集[]中代表的是ASCII编码的退格字符(对应字符值0x08),但这和e.key返回的"Backspace"完全不匹配,所以退格键过不了正则校验,被e.preventDefault()直接阻止了。

修正方案

你可以直接单独判断e.key是否为"Backspace",修改后的代码如下:

$('#field').keydown(function(e) {
  // 只允许字母和退格键输入
  if (!/^[A-Za-z]$/i.test(e.key) && e.key !== "Backspace") {
    e.preventDefault();
  }
});

如果需要兼容旧版浏览器,也可以加入keyCode判断(退格键的keyCode是8):

$('#field').keydown(function(e) {
  const isLetter = /^[A-Za-z]$/i.test(e.key);
  const isBackspace = e.key === "Backspace" || e.keyCode === 8;
  if (!isLetter && !isBackspace) {
    e.preventDefault();
  }
});

内容的提问来源于stack exchange,提问作者gene b.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 13:55:03