gpt4 book ai didi

javascript - Javascript 字母数字的 RegEx 未按预期工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:33 24 4
gpt4 key购买 nike

我有以下脚本:

$('#txtUsername').keydown( function(evt) { 
if (/^[a-z0-9]+$/i.test(String.fromCharCode(evt.keyCode)) == false) {
evt.returnValue = false;
return false;
}
});

上面的脚本应该防止用户在用户名字段中输入特殊字符。问题是这个脚本允许输入字母数字字符,它会阻止 `~_+-=[]{}\|;:'",<.>/?

我还需要这个来阻止 !@#$%^&*() 字符。

我做错了什么?我正在使用最新的 Chrome 浏览器对此进行测试。

编辑我知道这不是验证用户名的最佳方式,但我质疑为什么正则表达式没有显示正确的行为。

jsFiddle 点击 here

最佳答案

使用keypress 事件,而不是keydown。当您使用 keydown 时,输入 @ 被视为按下 Shift,然后是 2,然后是 2 是正则表达式允许的。 keypress 获取合并的按键代码。

此外,evt.returnValue 已弃用。阻止正常事件处理程序运行的正确方法是调用 evt.preventDefault()

$('#txtUsername').keypress(function(evt) {
if (/^[a-z0-9]+$/i.test(String.fromCharCode(evt.keyCode)) == false) {
evt.preventDefault();
return false;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="txtUsername" />

关于javascript - Javascript 字母数字的 RegEx 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27389329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com