2012-01-17 13 views
0

フォームにHTMLフィールドがあり、JSとRegexを使用して、ユーザーがフィールドに挿入できる文字を制限する必要があります。フォームのユーザーは、() * + ^/X xの次の文字と数字とスペースのみを挿入できます(別の文字を数字またはペーストするときは何も書き込まれません)。これは可能ですか?私はRegexが必要です、私は最終的にJSとやり方を知っています。フォームフィールドで文字を制限する

答えて

2

[^\(\)\*+\^/Xx0-9 ] 

この正規表現を試してみてくださいここでは、許可された文字のいずれを含まないパターンを見つけようとしています。見つけたら、入力された文字が間違っていたことを意味します。

0

について:

[^\(\)\*+\^/Xx0-9 ] 

これらの文字のいずれもセット内でエスケープする必要はありません(そうしても大丈夫です)。

ユーザー・タイプ(これはjqueryのメソッドを使用しています)として制限したい場合:

$('#in1').keyup(function (evt) { 
    var content = $('#in1').val(); 
    $('#in1').val(content.replace(/[^()*+^/Xx0-9]/g, "")); 
    return true; 
}); 

「IN1」が入力のIDです。

+1

これは '貼り付けから来ているの入力を制限しませんその境界線
をより効率的に、チェックするために、より多くの範囲と文字が含まれています'マウスだけを使用します。 –

+0

@StephenP:それをチェックする方法は? –

+1

@ 3000 - 'onpaste'イベントがあります。イベントをキャンセルする(falseまたは実際の 'キャンセル' APIを返すことにより)、ペーストが発生しないようにします。私は入力を検証する場所として次のすべてのイベントを使用する少なくとも1つのケースを持っています: 'onkeyup'、' onchange'、 'onpaste'、' onblur'、 'onselectionchange' –

1

これには正解または間違いはありません。
通常、特定の条件に対してロジックのバイアスを使用してチェックするほうが安価です。
の許可がに許可されているとよく聞こえる場合は、許可された(正の)文字クラスを使用してください。

可クラス:[()*+^/Xx0-9 ]、チェック:[^()*+^/Xx0-9 ]、チェック::<space>(-+/-9X\^x

は、クラス許可されていない場合、\0-\37!-',\-.:-WY-\]_-wy-\377

統計的データの99% enterredが有効で、 'Allowed'クラスが少ないその中のrk
すべての文字または範囲をチェックする必要はありません。
「許可されていない」クラスでは、すべての範囲をチェックする必要があります。この特定のケースで

、陰性クラスは、データのほとんどが無効だった場合、

関連する問題