Javascript 用于字母数字、删除、退格、空格但不用于特殊字符的正则表达式

Javascript 用于字母数字、删除、退格、空格但不用于特殊字符的正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我使用正则表达式允许文本框中的字母数字,但不知道如何允许退格和删除。现在用户不能删除,空格,退格 这是密码 $('#MemberBasicInfor_FirstName, #MemberBasicInfor_LastName').on('keypress', function (event) { var regex = new RegExp("^[a-zA-Z0-9]+$"); var key = String.fromCharCode(!event.cha

我使用正则表达式允许文本框中的字母数字,但不知道如何允许退格和删除。现在用户不能删除,空格,退格

这是密码

   $('#MemberBasicInfor_FirstName, #MemberBasicInfor_LastName').on('keypress', function (event) {
        var regex = new RegExp("^[a-zA-Z0-9]+$");
        var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
        if (!regex.test(key)) {
            event.preventDefault();
            return false;
        }
    });

请修改并允许删除、空格和退格。

退格不可重检,因此您最好使用ASCII码

$('#MemberBasicInfor_FirstName, #MemberBasicInfor_LastName').on('keypress', function (event) {
    var allowedCodes = [[8, 8], [32, 32], [48, 57], [65, 90], [97, 122], [127, 127]];
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!allowedCodes(codePair => key.charCodeAt(0) <= codePair[0] || key.charCodeAt(0) >= codePair[1])) {
        event.preventDefault();
        return false;
    }
});
$('#memberbasicin for_FirstName,#memberbasicin for_LastName')。on('keypress',函数(事件){
var allowedCodes=[[8,8]、[32,32]、[48,57]、[65,90]、[97122]、[127127];
var key=String.fromCharCode(!event.charCode?event.which:event.charCode);
如果(!allowedCodes(代码对=>key.charCodeAt(0)=代码对[1])){
event.preventDefault();
返回false;
}
});

这在很大程度上取决于您使用的浏览器,Chrome和Edge甚至不会启动
按键来执行删除和退格操作。对于Firefox来说,按键更为普遍,甚至像箭头键这样的东西也会触发它

退格字符代码为8,可以使用
\b
表示。空间只是一个空间。删除、箭头键、开始和结束都将给出字符代码0。Firefox不考虑Ctrl或Alt,因此类似于
Ctrl+v
的内容将被视为简单的
v
,如果这是一个问题,您需要调整代码以检查修改键。同样,大多数浏览器都允许通过其他根本不需要按键的技术进行复制和粘贴,因此这些技术都不会受到影响

综上所述,我相信您需要的RegExp是这样的:

var regex = /[a-zA-Z0-9\b\0 ]/;

正则表达式测试字符串和字符列表。删除按键不能存储为字符。相反,你应该使用,或者类似的东西。如果任何人有另一个未被弃用的解决方案,请共享。可以在字符类中使用
\b
在RegExp中匹配退格,这相当于字符代码8。