jQuery电子邮件验证要求 [英] jQuery email validation requirements

查看:83
本文介绍了jQuery电子邮件验证要求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用jQuery.Validation插件进行客户端验证,此外,我还验证电子邮件地址.现在,我也想在服务器端进行验证(适用于没有javascript等的用户).由于缺乏更好的主意,我开始使用正则表达式,但很快我意识到我想使用与jQuery方法相同的要求很重要.另外,如果我可以找到某种方法来用自己的方法覆盖jQuery验证要求,那就可以了.

I'm using the jQuery.Validation plugin for client side validation, and among other things I validate email addresses. Now I also want to validate on the server side (for users without javascript etc). For lack of better ideas I started on a regex, but quite soon I realized that I want to important to use the same requirements as the jQuery method. Alternatively, if I could find some way to override the jQuery validation requirements with my own, that'd be OK to.

有人知道jQuery方法有什么要求吗?它是正则表达式验证吗,如果是的话,它是什么表达式?即使我不知道,有什么方法可以覆盖它?

Does anyone know what requirements the jQuery method has? Is it regex validation, and, in case it is, what is the expression? Is there any way to override it, even if I don't know it?

(我已经注意到可以进行远程验证,但是如果可能的话,我想避免这种额外的网络流量...)

(I have noted that it's possible to preform remote validation, but if possible I'd like to avoid this extra network traffic...)

推荐答案

jQuery验证插件的来源确实使用了怪物正则表达式. 您应该能够以系统语言在服务器端应用相同的正则表达式.

The source for jQuery's validation plugin does indeed use a monster regex. You should be able to apply the same regex on the server side in your system's language.

以下是来源:

// http://docs.jquery.com/Plugins/Validation/Methods/email
email: function(value, element) {
    // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
    return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(element.value);
},

这里只是正则表达式部分:

Here's just the regex portion:

/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-
\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-
\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([
\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF
\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF
\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(
\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[
\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF
\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-
\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[
\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF
\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]
)))\.?$/

编辑:我之前没有注意到,但是正则表达式中的一些字符被当作标记吃掉了.我将其放在代码块中并添加了换行符.请注意,这些换行符用于可读性",而不是实际正则表达式的一部分.

EDIT: I didn't notice before but some of the chars in the regex were being eaten as markup. I put it in a code block and added newlines. Note those newlines are for "readability" and aren't part of the actual regex.

这篇关于jQuery电子邮件验证要求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆