2013-07-03 50 views
32

[\b]は、明らかにバックスペース文字に一致します。文字列にバックスペース文字を含める方法を理解できません。 これをどのように使用するのか具体的な例を教えてもらえますか?本当にありがとう。[ b]バックスペース正規表現の使い方は?

+0

もちろん、_control_codeがより正確であるため、文字列にはバックスペース「文字」を入れることができます(ここでは引用符で囲みます)。しかし、それはASCIIの一部です(そしてそのためにUTF-8も同様です)。もちろん、それらのエンコーディングが使用されている場所であればどこでも発生する可能性があります。 – CBroe

+2

この文字列がどのような環境で使われているのでしょうか?それは別の質問です。 HTMLに入れたり、JSから警告したりログを取ったりすると、目立った効果はほとんど見られません。たとえば、この文字列が送信された本当に古い(針)プリンタの場合、1文字の位置を元に戻し、 – CBroe

+0

ええ、あなたの答えを見た。明確化のためにありがとう。 – CBroe

答えて

31

\bは、ワード境界であること)、\bは、文字クラス内でバックスペースを意味しているの:例えば

[\b] 

これは確かにバックスペースにマッチしますキャラクター。これはテキストで表示できるASCII制御文字です(ASCIIコード8または10、8進数)。私はそれが主に従来の理由で分音記号を付けるために使用されていると考えています(例えば、a、バックスペース´á)。現在、これらは主にUnicodeの結合マークに置き換えられています。

バックスペースを含む文字列は、最終的にと表示されます。は、レンダリングするソフトウェアによって異なります。コンソールは、おそらくカーソルを元の位置に戻し、バックスペースの後ろに新しい文字があれば、そこにあったものを上書きするでしょう。 (あなたはJavaScriptでそれを試してみたい場合は、Node.jsのような)インタラクティブスクリプトコンソールを起動し、これを参照してください、そして、あなたがdef省略した

> console.log("abc\b\bdef") 
adef 

注意を実行するには、単に、理由abcを取得したいですバックスペース自体は何も消去しません。カーソルを戻すだけです。

一方、入力フィールドでブラウザが無視する場合があります。たとえば、Unicode converterをチェックアウトし、左下の入力にJavaScript入力abc\b\bdefを入力し、「変換」をクリックすると、「文字」出力にはbcが消去されません。

ところで\bは文字クラスのバックスペースであり、JavaScriptに固有のものではなく、ほとんどの正規表現の味でこのように解釈されます。

さらに読書:

+3

詳細については、この回答を参照してください:http://stackoverflow.com/a/6792867/758446 – BlackVegetable

+0

@BlackVegetableありがとう、私はこのようなものを探していますが、すぐに良いソースを見つけることができませんでした –

+0

今すぐフォローアップの課題そのようなキャラクターを実際にキャプチャしたいと思う奇妙な(現代的な)エッジケースを構築することでしょう! – BlackVegetable

7

正規表現(文字クラスの外側)のコンテキスト内で、\bはバックスペースを意味しません。それは「単語境界」を意味します。 There are lot's of uses for it。例えば、

/\bword\b/ 

some wordなくsomewordにマッチします。 m.butterが指摘

として、あなたはそれは文字クラス内の場所だ場合は、バックスペース文字を一致させるためにそれを使用することができます。他のすべての権利一般的である一方で

var input = "this is a \btest."; 
/[\b]/.test(input); // true 
+0

+1 10秒で私を倒し、より良く説明しました。 – elclanrs

+4

これは重要なことではありません。 '[\ b]'はバックスペースにマッチします。 –

+0

@ m.buettner:はい、それは唯一のケースです。バックスペース文字は '\ u0008'です。 – elclanrs

0

実世界の例:私たちは、に私たち自身のプロトコルを使用して(ホストされたサーバーを経由して)クライアント間の\ bを渡しますユーザーが既に送信したテキストをバックスペースで表示できるようにします。ある種類のクライアント(これはWebブラウザベースですが、他のクライアントはありません)では、バックスペースキーヒット(e.which == 8 // Ref。https://api.jquery.com/keydown/)をチェックし、 '\ b'を送信します。他のクライアントがこれを(おそらく自動的に)処理します。私のWebクライアントが\ bを受け取ったら、私のコードはそれを適切に処理しなければなりません。

関連する問題