javascript - jQuery 只允许数字、字母和连字符

标签 javascript jquery regex

如何使用 jQuery 从字符串中删除除数字、字母和连字符之外的所有内容?

我发现这段代码只允许使用字母数字字符,但我不确定如何添加连字符。

$('#text').keypress(function (e) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (regex.test(str)) {
        return true;
    }

    e.preventDefault();
    return false;
});

最佳答案

您只需将正则表达式更改为:"^[a-zA-Z0-9\-]+$"

请注意,连字符使用 \ 进行转义,否则它用于指定一个范围,例如 a-z(从 a 的字符) >z)。

此代码只会检查最后输入的字符是否在允许的列表中,您可能还想检查在粘贴到字段后,该值是否仍然正确:

// The function you currently have
$('#text').keypress(function (e) {
    var allowedChars = new RegExp("^[a-zA-Z0-9\-]+$");
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (allowedChars.test(str)) {
        return true;
    }
    e.preventDefault();
    return false;
}).keyup(function() {
    // the addition, which whill check the value after a keyup (triggered by Ctrl+V)
    // We take the same regex as for allowedChars, but we add ^ after the first bracket : it means "all character BUT these"
    var forbiddenChars = new RegExp("[^a-zA-Z0-9\-]", 'g');
    if (forbiddenChars.test($(this).val())) {
        $(this).val($(this).val().replace(forbiddenChars, ''));
    }
});

关于javascript - jQuery 只允许数字、字母和连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20445425/

相关文章:

javascript - 如何验证在框周围移动的可拖动文本?

regex - 正则表达式在第二个和第三个斜杠之间查找文本

regex - 如何用空格替换行内制表符,保持对齐?

python - 使用正则表达式检查测试字符串是否为固定格式

javascript 计时器和 css 位置更新

javascript - 如何选择两个h2之间的所有元素

php - 根据域显示不同的内容

jquery - 如何消除 jQuery Mobile "slide"过渡的淡入淡出?

javascript - Gruntfile.js 任务...错误

javascript - 以编程方式确定要在 Web 导航栏中显示多少元素