首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在自动补全中使用正则表达式

如何在自动补全中使用正则表达式
EN

Stack Overflow用户
提问于 2018-08-10 05:36:47
回答 1查看 598关注 0票数 0

此正则表达式是文本字段中允许使用的字符的白名单。但是,当使用自动补全来填充字段时,它不会捕获无效字符。

最后使用了填充程序,这样IE和Edge就可以捕获numpad无效字符。

如何让这个正则表达式在自动完成填充时捕获无效字符?

代码语言:javascript
运行
复制
var validChars = /^[ 0-9a-z\s.#,-]*$/i;
var textareas = document.querySelectorAll('.txt');
for(let i = 0; i < textareas.length; i++){
 textareas[i].addEventListener("paste", function(e){
var clipboardData, pastedData;
// Get pasted data via clipboard API
clipboardData = e.clipboardData || window.clipboardData;
pastedData = clipboardData.getData('Text');
var inputOk = scrub(pastedData);
if(!inputOk){
  e.preventDefault();
}
});
textareas[i].addEventListener("keypress", function(e){
  var inputOk = scrub(e.key);
  if(!inputOk){
    e.preventDefault();
  }
});
}
function scrub(contents)
      {

       if(contents.match(validChars))
         {
          return true;
         }
       else
         {
          alert("Invalid special character entered: " + contents + " ");
          return false;
         }
      }
// KeyboardEvent shim needed for Internet Explorer and Edge. These browsers return non-standard 'key' 
// property values from the numberpad. 
(function() {

  var event = KeyboardEvent.prototype
  var desc = Object.getOwnPropertyDescriptor(event, "key")
  if (!desc) return

  var keys = {

    Multiply: "*",
    Add: "+",
    Divide: "/",
  }

  Object.defineProperty(event, "key", {
    get: function() {
      var key = desc.get.call(this)

      return keys.hasOwnProperty(key) ? keys[key] : key
    },
  })
})()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-10 05:54:11

您可以使用向文本区域添加input事件侦听器,并且只允许与正则表达式匹配的输入。

代码语言:javascript
运行
复制
<textarea></textarea>
<script>
var validChars = /^[ 0-9a-z\s.#,-]*$/i;
var prevInput = null;
document.querySelector('textarea').addEventListener("input", function(e){
  if(!this.value.match(validChars)){
    alert("Invalid Input!");
    this.value = prevInput? prevInput: '';
  }
  prevInput = this.value;
});
</script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51776101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档