textarea的jQuery输入过滤器

时间:2011-12-08 14:49:12

标签: javascript jquery regex filter keyup

我将this solution改编成了我的脚本。这个想法是防止用户输入未经授权的字符(当然后端也有一个过滤器)。

$('#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);
});

2 个答案:

答案 0 :(得分:5)

将正则表达式反转为仅替换要省略的特定字符:

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

注意,其中一些需要使用[]字符类中的反斜杠进行转义:\\\[\]\^\/

答案 1 :(得分:3)

如果我理解你想要做什么,你不能只是将这些不需要的字符添加到你的正则表达式而不是[^a-zA-Z0-9]吗?

将其替换为[@#\$%\^&\*\(\)=_\+"':;\/<>\\\|\{\}\[\]](注意转义)