使用javascript& amp;在按键上验证电子邮件地址jQuery的

时间:2011-08-23 18:44:16

标签: javascript jquery regex

我正在尝试阻止用户在输入电子邮件地址时输入无效字符。我试图将整个价值验证为整体(稍后发生)。

我“认为”这是阻止字符列表(例如#或$)的正确方法:

/[A-Z0-9a-z@]^[$#<>?]/

此部分有效:

/[A-Z0-9a-z@]/

此部分失败:

/^[$#<>?]/

有什么想法吗?

5 个答案:

答案 0 :(得分:5)

请尝试/[^$#<>?]/

<{1}} 里面的<{1>} ,并且在开始括号后面直接使该类为负数。

您可以在regular-expressions.info

上详细了解相关信息

或者更好的是,这是一个简单的正则表达式,用你的作为开始。

http://jsfiddle.net/hG99U/1/

答案 1 :(得分:2)

$('input[type=email]').on('keypress', function (e) {
    var re = /[A-Z0-9a-z@\._]/.test(e.key);
    if (!re) {
        return false;
    }
});

答案 2 :(得分:1)

你不需要将所有特殊字符都写入需要禁止的正则表达式中,因为会有一个大的列表,简单地写一些允许的,因为它们较少(你已经完成了也许只剩下一两个字符,即DOT,UnderScore

您用来测试输入字符有效性的代码已经很好了,这样可以验证字符是否仅在[A-Z0-9a-z@]之外,可能您可以为其他两个字符设置[A-Z0-9a-z@\._]

keychar = String.fromCharCode(keynum);
regEx = /[A-Z0-9a-z@]/;
return regEx.test(keychar);

答案 3 :(得分:1)

<script type="text/javascript">
<!--
var email='1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.@_'
var bksp = 'backspace'
var alt = 'alt'


function alpha(e,allow) {
var k;
k=document.all?parseInt(e.keyCode): parseInt(e.which);
return (allow.indexOf(String.fromCharCode(k))!=-1);
}

// -->
</script>


<input type="text" onkeypress="return alpha(event,email+bksp+alt)" />

答案 4 :(得分:0)

<强> FIXED:
问题是一些keynum值与不良字符冲突。这固定了!

// **********************
// .emailOnly
// Use -
// Makes the element email-only.
//
// Example -
// $('.myElement').emailOnly();
// **********************
(function($) {
    $.fn.extend({
        emailOnly: function() {
            return this.each(function() {
                return $(this).keypress(function(e, text) {

                    var keynum;
                    var keychar;
                    var regEx;
                    var allowedKeyNums = [8, 9, 35, 36, 46]; // Backspace, Tab, End, Home, (Delete & period)

                    if (window.event) // IE
                        keynum = e.keyCode;
                    else if (e.which) // Netscape/Firefox/Opera
                        keynum = e.which;
                    else
                        keynum = e.keyCode

                    keychar = String.fromCharCode(keynum);
                    regEx = /[^$#<>?]/ // Undesirable characters

                    // Test for keynum values that collide with undesirable characters
                    if ($.inArray(keynum, allowedKeyNums) > -1)
                        return regEx.test(keychar);

                    regEx = /[A-Z0-9a-z@]/
                    return regEx.test(keychar);
                });
            });
        }
    });
})(jQuery);