当用户在输入框中键入时,从正则表达式匹配中删除空格

时间:2013-06-25 00:56:15

标签: javascript regex

如果用户键入:

my name is jackson5 model number 5g1 |nR%1b and I would 644 like to say 55 hello to all the tags of html in the world.

我想将55 hello替换为55 hello,同时他们继续打字输入框没有打嗝或中断。

这是我的代码到目前为止。我在那里有正则表达式语句,但不知道如何替换55 hello之间的空格,使其变为55hello。

<script type="text/javascript">
function isValid(strQuery){ 
    var regStatement =/[0-9]+ hello/;
   if (regStatement.test(strQuery.value)) { 
    strQuery.value = strQuery.value.replace("$2","");
    }
 }
</script>

<input type="text" id="wtf" name="search_query" onkeyup="isValid(this);" />

2 个答案:

答案 0 :(得分:1)

试试这个

function isValid(strQuery){ 
    strQuery.value = strQuery.value.replace(/((\d+)\s+)(?=hello)/,"$2");
}

您不需要先测试它,如果字符串不匹配,它将不会替换任何内容。

答案 1 :(得分:1)

我没有足够的声誉来发表评论,所以我将不得不诉诸'答案' - 小心这种方法。我已经测试了我的解决方案以及@leonhart上面发布的解决方案(他的情况好多了,所以我不会打扰我的)。两者的共同之处在于,如果您的输入框具有类似输入的历史记录,则会导致两次调用isValid,并开始提供建议(在Chrome中没有,但在Firefox中没有)。不确定是什么导致了它,但是,显然,事件处理程序已经注册了两次,或者沿着这些方向发生了什么......祝你好运!或者也许这里的其他人可以解释原因......以及解决方法=)