多年来,我慢慢开发了一个正则表达式,可以正确验证MOST电子邮件地址,假设他们不使用IP地址作为服务器部分.
我在几个PHP程序中使用它,它大部分时间都可以工作.但是,我不时会遇到使用它的网站遇到问题的人,我最终不得不进行一些调整(最近我意识到我不允许使用4字符TLD).
验证电子邮件的最佳正则表达式是什么?
我已经看到了几个使用函数的解决方案,这些函数使用了几个较短的表达式,但我宁愿在一个简单的函数中使用一个长复杂表达式,而不是在一个更复杂的函数中使用几个短表达式.
我正在设计一个数据库表,并再一次问自己同样愚蠢的问题:firstname字段应该多长时间?
有没有人有最常见字段的合理长度列表,例如名字,姓氏和电子邮件地址?
有谁知道如何在Swift中验证电子邮件地址?我找到了这段代码:
- (BOOL) validEmail:(NSString*) emailString {
if([emailString length]==0){
return NO;
}
NSString *regExPattern = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSRegularExpression *regEx = [[NSRegularExpression alloc] initWithPattern:regExPattern options:NSRegularExpressionCaseInsensitive error:nil];
NSUInteger regExMatches = [regEx numberOfMatchesInString:emailString options:0 range:NSMakeRange(0, [emailString length])];
NSLog(@"%i", regExMatches);
if (regExMatches == 0) {
return NO;
} else {
return YES;
}
}
Run Code Online (Sandbox Code Playgroud)
但我不能把它翻译成斯威夫特.
首先,我知道不建议使用正则表达式用于电子邮件,但我必须对此进行测试.
我有这个正则表达式:
\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
Run Code Online (Sandbox Code Playgroud)
在Java中,我这样做了:
Pattern p = Pattern.compile("\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b");
Matcher m = p.matcher("foobar@gmail.com");
if (m.find())
System.out.println("Correct!");
Run Code Online (Sandbox Code Playgroud)
但是,无论电子邮件是否成立,正则表达式都会失败.Eclipse中的"查找和替换"与相同的正则表达式一起工作正常.
任何的想法?
谢谢,
我认识到电子邮件地址基本上可以无限长,所以我在varchar电子邮件地址字段上施加的任何大小都是任意的.但是,我想知道"标准"是什么?你们有多长时间制作它?(姓名字段的相同问题......)
更新:显然,电子邮件地址的最大长度为320(<= 64名称部分,<= 255域).你用这个吗?
这是我查询的提取部分,反映了EMAIL_ADDRESS列数据类型和属性:
EMAIL_ADDRESS CHARACTER VARYING(20) NOT NULL,
Run Code Online (Sandbox Code Playgroud)
但是,约翰桑德斯使用VARYING(256).
这表明我没有必要正确理解变化.
据我所知,在我的情况下,电子邮件地址的长度为20个字符,而Jodn为256个字符.
John的代码中的上下文
CREATE TABLE so."User"
(
USER_ID SERIAL NOT NULL,
USER_NAME CHARACTER VARYING(50) NOT NULL,
EMAIL_ADDRESS CHARACTER VARYING(256) NOT NULL, // Here
HASHED_PASSWORD so.HashedPassword NOT NULL,
OPEN_ID CHARACTER VARYING(512),
A_MODERATOR BOOLEAN,
LOGGED_IN BOOLEAN,
HAS_BEEN_SENT_A_MODERATOR_MESSAGE BOOLEAN,
CONSTRAINT User_PK PRIMARY KEY(USER_ID)
);
Run Code Online (Sandbox Code Playgroud)
我从未见过普通人使用的超过20个字符的电子邮件地址.
数据库中电子邮件地址的最佳长度是多少?
我想知道Unix系统中主机名的最大字符数是多少.另外,是否有任何可以在Unix编程中使用的定义变量来调用该数字?(即主机名允许的字符数).
我在C编程
我正在寻找将电子邮件地址存储到mysql表中的最正确的字段类型和大小.
我最初考虑varchar 255,但我认为255可能是太多甚至太少,我能够捕获所有有效的电子邮件地址的平均大小是多少?
什么是使用DOMAIN名称片段对具有一列电子邮件地址的表进行排序的最短和/或最有效的SQL语句?
这基本上忽略了电子邮件地址中"@"之前的任何内容,并且不区分大小写.让我们忽略这个国际化的域名.
目标是:mySQL,MSSQL,Oracle
来自的样本数据 TABLE1
id name email ------------------------------------------ 1 John Doe johndoe@domain.com 2 Jane Doe janedoe@helloworld.com 3 Ali Baba ali@babaland.com 4 Foo Bar foo@worldof.bar.net 5 Tarrack Ocama me@am-no-president.org
通过电子邮件订购
SELECT * FROM TABLE1 ORDER BY EMAIL ASC
id name email ------------------------------------------ 3 Ali Baba ali@babaland.com 4 Foo Bar foo@worldof.bar.net 2 Jane Doe janedoe@helloworld.com 1 John Doe johndoe@domain.com 5 Tarrack Ocama me@am-no-president.org
按域名排序
SELECT * FROM TABLE1 ORDER BY ?????? ASC
id name email ------------------------------------------ 5 Tarrack Ocama me@am-no-president.org 3 …
email ×6
database ×2
regex ×2
sql ×2
validation ×2
c ×1
c# ×1
convention ×1
domain-name ×1
fieldtype ×1
hostname ×1
ios ×1
java ×1
max ×1
mysql ×1
performance ×1
size ×1
sorting ×1
sql-order-by ×1
standards ×1
swift ×1
unix ×1
varchar ×1