2016-04-11 19 views
2

私は、キーイベントがバックスペースであるかどうか、この条件をテストしたい:keyはキーストロークから来ている正規表現ワード境界(バックスペース)テストケース

if (key.match(/[\b]/)) { 
    return true; 
    } 

。 ('a', '6' , '.'など) keyの値がifの場合、返される条件はtrueです。

key'.'と言いましたが、それは単語境界です(ただし、悲しいことに言葉でしかありません)。表示する鍵は何ですか?backspace <-

+1

を使用することができますか? 'key.match(/ [\ w。] /)' –

+0

いいえ、任意の単語(単語文字)に一致します。私は単語の境界に一致したい。それらは違う。 http://stackoverflow.com/questions/11874234/difference-between-w-and-b-regular-expression-meta-characters –

+1

2つ以上の文字を比較することなく、単語境界を検出することはできません。 '\ b'を文字に対して常にテストすることは* true *です。スペース= falseに対してまた、あなたの正規表現は、単語の境界ではなく、バックスペース文字が存在するかどうかを調べるためにテストします。 [regex1010 here](https://regex101.com/r/zI1rV5/1) - 右ペインの説明を確認してください。 – ClasG

答えて

3

[\b]は、\bが文字クラス内にあるため、バックスペース文字と一致します。単語の境界を一致させるには、(文字クラス内\bがあるない/\b/を使用します。

var key = "a"; 
 
if (/\b/.test(key)) { // Or, perhaps, for better portability, /[\x08]/.test(key) 
 
    alert(true); 
 
}

はあなたがちょうど\Wを必要とするすべての非単語文字に一致するように計画している場合、\bではありません。 ワード境界\b^\w又は\w及び$、又は\W及び\w又は\w\W\wではないこれらの範囲内の任意の他の文字の[a-zA-Z0-9_]\Wスタンドを意味する)との間の位置に一致します。また、1文字の文字列を一致させる必要がある場合は、アンカー:/^\W$/を忘れないようにしてください。バックスペースキーをテストする

UPDATE

、あなたはこのことを意味

var key = "\x08"; 
 
if (/[\b]/.test(key)) { 
 
alert(true); 
 
}

+0

バックスペースに合わせる必要がありました。質問が更新されました。単語境界とバックスペースを間違っていると私を修正するためのアップアップ答え。思考のバックスペースも単語の境界です。 –

+0

私は答えがちょうどあなたが次に必要なものだと思う:)または今あなたの投稿を削除したいですか? –

+0

いいえ。コードは機能しています。バックスペースのときはtrueを返します。私はその行動を嘲笑したい。意味、私はどのような値を手動で変数 'key'に追加してtrueを返しますか? '.'、' a'などの場合はfalseを返します。私はその機能をユニットテストしています。 –