正则表达式:字母数字空格和键盘上的破折号

时间:2014-02-22 21:17:14

标签: javascript regex

我看到很多帖子接近我正在寻找的内容,但我仍然遇到错误并且希望得到一些正则表达式的帮助。我有一个表单字段,需要允许字母数字,空格和短划线。理想情况下,空格和破折号不会是连续的。

我希望在keyup上触发,以便用户无法选择键入这些禁用字符。

这是我到目前为止所做的,但是我正在抛出错误的转义错误,而且这些代码在firefox中不起作用。谢谢你的帮助!

$('#your_name').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() {
    var forbiddenChars = new RegExp("[^a-zA-Z0-9\-\ ]", 'g');
    if (forbiddenChars.test($(this).val())) {
        $(this).val($(this).val().replace(forbiddenChars, ''));
    }
});

1 个答案:

答案 0 :(得分:1)

试试这个:

$('#your_name').keyup(function (e) {
    var allowedChars = /^[a-z\d -]+$/i;
    var str = String.fromCharCode(e.charCode || e.which);

    var forbiddenChars = /[^a-z\d -]/gi;
    if (forbiddenChars.test(this.value)) {
        this.value = this.value.replace(forbiddenChars, '');
    }

    if (allowedChars.test(str)) {
        return true;
    }

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