做这个Javascript正则表达式与PHP兼容:
^([^'x00-'x20'x22'x28'x29'x2c'x2e'x3a-'x3c'x3e'x40'x5b-'x5d'x7f-'xff]+|'x22([^'x0d'x22'x5c'x80-'xff]|'x5c['x00-'x7f])*'x22)('x2e([^'x00-'x20'x22'x28'x29'x2c'x2e'x3a-'x3c'x3e'x40'x5b-'x5d'x7f-'xff]+|'x22([^'x0d'x22'x5c'x80-'xff]|'x5c['x00-'x7f])*'x22))*'x40([^'x00-'x20'x22'x28'x29'x2c'x2e'x3a-'x3c'x3e'x40'x5b-'x5d'x7f-'xff]+|'x5b([^'x0d'x5b-'x5d'x80-'xff]|'x5c['x00-'x7f])*'x5d)('x2e([^'x00-'x20'x22'x28'x29'x2c'x2e'x3a-'x3c'x3e'x40'x5b-'x5d'x7f-'xff]+|'x5b([^'x0d'x5b-'x5d'x80-'xff]|'x5c['x00-'x7f])*'x5d))*$
这个正则表达式适用于验证电子邮件,并且是javascript中此函数的结果(sValidEmail):
function validateMail( sEmail )
{
// RFC822
var sQtext = '[^''x0d''x22''x5c''x80-''xff]';
var sDtext = '[^''x0d''x5b-''x5d''x80-''xff]';
var sAtom = '[^''x00-''x20''x22''x28''x29''x2c''x2e''x3a-''x3c''x3e''x40''x5b-''x5d''x7f-''xff]+';
var sQuotedPair = '''x5c[''x00-''x7f]';
var sDomainLiteral = '''x5b(' + sDtext + '|' + sQuotedPair + ')*''x5d';
var sQuotedString = '''x22(' + sQtext + '|' + sQuotedPair + ')*''x22';
var sDomain_ref = sAtom;
var sSubDomain = '(' + sDomain_ref + '|' + sDomainLiteral + ')';
var sWord = '(' + sAtom + '|' + sQuotedString + ')';
var sDomain = sSubDomain + '(''x2e' + sSubDomain + ')*';
var sLocalPart = sWord + '(''x2e' + sWord + ')*';
var sAddrSpec = sLocalPart + '''x40' + sDomain; // complete RFC822 email address spec
var sValidEmail = '^' + sAddrSpec + '$'; // as whole string
alert( sValidEmail );
var reValidEmail = new RegExp(sValidEmail);
if (reValidEmail.test(sEmail)) {
return true;
}
return false;
}
谢谢!
为什么要使用转义序列来验证电子邮件地址???
这里有一个你可以改用的,是的,它可以在JavaScript和PHP中使用:
[a-zA-Z0-9_'+'-]+('.[a-zA-Z0-9_'+'-]+)*@[a-zA-Z0-9_'+'-]+('.[a-zA-Z0-9_'+'-]+)*'.[a-zA-Z]{2,}