3

このソリューションをスクリプトに適合させました。アイデアは、ユーザーが許可されていない文字を入力できないようにすることです(もちろん、バックエンドにもフィルターがあります)。

$('#someinput').keyup(function() {
    var $th = $(this);
    $th.val( $th.val().replace(/[^a-zA-Z0-9]/g, function(str) {
        console.log(str);
        return '';
    }))
})

それはうまく機能しますが、ユーザーが次のような特定の許可された文字を入力できるようにする必要もあります:。、!?ñáéíóú-つまり、基本的なa-zA-Z0-9に加えて、いくつかの基本的な文字と一連の特殊言語文字。

実際に除外する必要があるのは、次のとおりです。@#$%^&*()= _ + "':; / <> \ | {} []

何か案は?ありがとう!

Michaelに感謝します

//query
$('#someinput').keyup(function() {
    var $th = $(this);
    $th.val($th.val().replace(/[@#$%\^&*()=_+"':;\/<>\\\|{}\[\]]/g,function(str){return '';}));
}).bind('paste',function(e) {
    setTimeout(function() {
        $('#someinput').val($('#someinput').val().replace(/[@#$%\^&*()=_+"':;\/<>\\\|{}\[\]]/g,function(str){return '';}));
        $('#someinput').val($('#someinput').val().replace(/\s+/g,' '));
    },100);
});
4

2 に答える 2

5

正規表現を反転して、省略したい特定の文字のみを置き換えます。

$th.val( $th.val().replace(/\s?[@#$%\^&*()=_+"':;\/<>\\\|{}\[\]]/g, ""));
// Edit: added optional \s to replace spaces after special chars

[]それらのいくつかは、文字クラス内でバックスラッシュを使用してエスケープする必要があることに注意してください。\\\[\]\^\/

于 2011-12-08T14:54:18.910 に答える
3

あなたが何をしたいのか理解しているなら、あなたはそれらの不要な文字をあなたの正規表現に追加するのではなく、単に追加することはできません[^a-zA-Z0-9]か?

[@#\$%\^&\*\(\)=_\+"':;\/<>\\\|\{\}\[\]]それを(エスケープに注意してください)に置き換えます

于 2011-12-08T14:54:37.640 に答える