完成正则表达式

时间:2017-11-03 23:37:10

标签: javascript regex

我想为我的网页浏览器输入一个自动完成工具,例如,如果按Tab键,单词htt会自动完成,将tp://添加到我的输入值

自动填充属性必须仅在用户输入" htt"在URL的开头。

我想通过正则表达式验证自动完成:

 if(event.keyCode == 9){
      if(myInput.value.match(/^(h|ht|htt|http|http:|http:\/)/)){
          myInput.value = "http://";
      }
 }

但结果不是预期的......

1 个答案:

答案 0 :(得分:2)

要改变的三件事:

  • 您没有分配给myInput.value,因为您与==而不是=进行了比较。
  • 正则表达式应该更好地拥有字符串锚$的结尾,或者在初始“h”之后的其他文本(可能在编辑已经存在的“http”之后)可能被替换 - 可能是不合需要的。
  • 最好取消TAB键的默认行为,这样不仅可以在离开输入框时自动完成。但是,更改TAB键的默认行为不会有我的偏好。

这是一个工作片段:

myInput.addEventListener('keydown', function (event) {
    if (event.keyCode == 9){
        if(this.value.match(/^(h|ht|htt|http|http:|http:\/)$/)){
            this.value = "http://";
        }
        event.preventDefault();
    }
});
<input id="myInput">