【发布时间】:2014-01-16 07:42:02
【问题描述】:
我正在使用以下正则表达式来验证电子邮件:
^[a-zA-Z0-9!$'*+/\-_#%?^`&=~}{|]+(\.[a-zA-Z0-9!$'*+/\-_#%?^`&=~}{|]+)*@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-['&_\]]]+)(\.[\w-['&_\]]]+)*))(\]?)$
这在 C# 中工作正常,但在 JavaScript 中,它不起作用....是的,我用双反斜杠替换了每个反斜杠,如下所示:
^[a-zA-Z0-9!$'*+/\\-_#%?^`&=~}{|]+(\\.[a-zA-Z0-9!$'*+/\\-_#%?^`&=~}{|]+)*@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-['&_\\]]]+)(\\.[\\w-['&_\\]]]+)*))(\\]?)$
我正在使用 XRegExp。我在这里错过了什么吗?有没有转换器可以将普通的正则表达式转换为 JavaScript :) ?
这是我的功能:
function CheckEmailAddress(email) {
var reg = new XRegExp("^[a-zA-Z0-9!$'*+/\\-_#%?^`&=~}{|]+(\\.[a-zA-Z0-9!$'*+/\\-_#%?^`&=~}{|]+)*@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-['&_\\]]]+)(\\.[\\w-['&_\\]]]+)*))(\\]?)$")
if (reg.test(email) == false) {
return false;
}
return true;
}
对于简单的“abc@123.com”电子邮件地址返回 false。
提前致谢!
凯文
【问题讨论】:
-
转义反斜杠意味着您匹配的是文字 ``... JS 正则表达式与 PCRE 的正则表达式非常相似,但稍微更容易。您不应该使用正则表达式验证电子邮件地址。这是不可能的……没有人能够使用单个正则表达式验证所有个有效的电子邮件地址……哦,你为什么使用 XRegExp,而不是简单的正则表达式?跨度>
-
您认为我还能如何在客户端验证电子邮件格式?
-
你没有。您可以进行一些基本验证(例如:输入是否包含
@符号),但数据验证在服务器端完成 -
不,我买不起无效的电子邮件格式……所以……回到我的问题。我的正则表达式有什么问题?
-
为什么不呢?你不是在执行 any 服务器端验证吗?因为 that 是你买不起的……不验证用户输入服务器端
标签: javascript regex backslash xregexp