1

如果用户键入:

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.

我想用 55hello 替换 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);" />
4

2 回答 2

1

尝试这个

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

你不需要先测试它,如果字符串不匹配,它不会替换任何东西。

于 2013-06-25T01:07:58.917 回答
1

我没有足够的声誉来发表评论,所以我将不得不求助于“答案”——小心这种方法。我已经测试了我的解决方案以及上面@leonhart 发布的解决方案(他的要好得多,所以我不会费心发布我的解决方案)。两者的共同点是,如果您的输入框有类似输入的历史记录,并且开始提供建议(在 Chrome 中没有发生,但在 Firefox 中发生),两者都会导致两次调用 isValid。不知道是什么原因造成的,但显然,事件处理程序注册了两次,或者类似的东西......祝你好运!或者也许这里的其他人可以解释原因......以及解决方法=)

于 2013-06-25T02:02:37.980 回答