首页 > 解决方案 > 使用 textarea 在正则表达式中包含退格键

问题描述

我看过这篇文章来帮助我(javascript中的正则表达式允许退格),但是我仍然不能使用退格删除字符。

我尝试了不同的变化

(/[0-1,\b]/g) 
(/[0-1][\b]/g)
(/[0-1]+[\b]/g)


...没有任何工作。

这是我的整个功能:

binary.addEventListener('keydown', (event) => {
  if (event.key.match(/[0-1]/g)) {
    return event;
  } else {
    event.preventDefault();
  }
});

事件处理程序附加到 <textarea id="binary" placeholder="Binary..." type="text"></textarea>.

我试图删除 preventDefault(),但那时我的正则表达式不适用。

标签: javascriptregexinput

解决方案


event.keyCode === 8 ||您可以通过向条件添加替代项来检查是否按下了 BACKSPACE if

RegExp.test()此外,用于检查正则表达式是否匹配字符串可能是“更干净”的, /[01]/.test(event.key).

let log  = document.querySelector('#log'),
    test = document.querySelector('#test');

test.addEventListener('keydown', (event) => {
  if (event.keyCode === 8 || /[01]/.test(event.key)) {
    return event;
  } else {
    event.preventDefault();
  }
});
#test:focus{outline: none;}
<input type='text' id='test' autofocus /><br />
<span id='log'></span>


推荐阅读