Javascript 使用regexp完成
我想为我的webbrowser的输入制作一个自动完成器,例如,如果您按tab键,单词Javascript 使用regexp完成,javascript,regex,Javascript,Regex,我想为我的webbrowser的输入制作一个自动完成器,例如,如果您按tab键,单词htt将自动完成,以将tp://添加到我的输入值中 仅当用户在URL开头输入“htt”时,“自动完成”属性才有效 我想用正则表达式验证自动完成: if(event.keyCode == 9){ if(myInput.value.match(/^(h|ht|htt|http|http:|http:\/)/)){ myInput.value = "http://"; }
htt
将自动完成,以将tp://
添加到我的输入值中
仅当用户在URL开头输入“htt”时,“自动完成”属性才有效
我想用正则表达式验证自动完成:
if(event.keyCode == 9){
if(myInput.value.match(/^(h|ht|htt|http|http:|http:\/)/)){
myInput.value = "http://";
}
}
但结果不是预期的…有三件事需要改变:
- 您没有分配给
,因为您在那里与myInput.value
而不是=
进行比较=
- 正则表达式最好有一个字符串结尾锚点
,否则初始“h”后面的其他文本(可能在编辑了已经存在的“http”之后)可能会被替换,这可能是不需要的李>$
- 最好取消TAB键的默认行为,这样不仅可以在离开输入框时自动完成。但是,更改TAB键的默认行为并不符合我的偏好李>
myInput.addEventListener('keydown',函数(事件){
如果(event.keyCode==9){
if(this.value.match(/^(h | ht | htt | http | http:| http:\/)$/){
this.value=“http://”;
}
event.preventDefault();
}
});代码>
总体上回答得不错,但我建议使用一种更具可伸缩性的模式:h(?:t(?:t(?:p(?:\/?)?)?
@CAustin,是的,这确实更有效,尽管我猜正则表达式解析器(应该?)实际上足够聪明,可以用这种方式编译它(除了非捕获组,这当然仍然是一个区别).谢谢你的回答!这正是我要找的。太棒了,谢谢你的专业知识