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.

55 の hello を 55hello に置き換えたいのですが、入力ボックスにしゃっくりや中断が発生することなく入力を続けます。

これまでの私のコードは次のとおりです。そこに正規表現ステートメントがありますが、55 hello の間のスペースを置き換えて 55 hello にする方法がわかりません。

<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によって投稿されたものをテストしました(彼ははるかに優れているので、わざわざ投稿しません)。両方に共通しているのは、入力ボックスに同様の入力の履歴があり、提案を提供し始める場合に備えて、両方が isValid を 2 回呼び出すことです (Chrome では発生しませんでしたが、Firefox では発生しました)。何が原因なのかはわかりませんが、どうやら、イベント ハンドラーが 2 回登録されているか、またはそれらの線に沿って何かが登録されているようです。または、ここにいる他の誰かが原因を説明できるかもしれません...そして回避策=)

于 2013-06-25T02:02:37.980 に答える