如何验证电子邮件是否有效?
例如:
test@test.com
- 有效的test@@.com
- 无效的test@.com
- 无效的
下面是一个创建带有地址的邮件特定规则的表的示例(正则表达式)。然后是 sql 查询模式 (Regexp) 的示例。有了这个,你应该能够做你想做的事
使用正则表达式创建表
create table Contacts (
FirstName nvarchar(30),
LastName nvarchar(30),
EmailAddress nvarchar(30) CHECK (dbo.RegExMatch('[a-zA-Z0-9_\-]+@([a-zA-Z0-9_\-]+\.)+(com|org|edu|nz)', EmailAddress)=1),
USPhoneNo nvarchar(30) CHECK (dbo.RegExMatch('\([1-9][0-9][0-9]\) [0-9][0-9][0-9]\-[0-9][0-9][0-9][0-9]', UsPhoneNo)=1))
INSERT INTO [talend].[dbo].[Contacts]
([FirstName]
,[LastName]
,[EmailAddress]
,[USPhoneNo])
VALUES
('Hallam'
,'Amine'
,'mhallam@talend.com’
,'0129-2090-1092')
,( 'encoremoi'
,'nimportequoi'
,'amine@zichji.org'
,'(122) 190-9090')
GO
使用正则表达式执行请求 sql
SELECT [FirstName]
,[LastName]
,[EmailAddress]
,[USPhoneNo]
FROM [talend].[dbo].[Contacts]
where [talend].[dbo].RegExMatch([EmailAddress],'[a-zA-Z0-9_\-]+@([a-zA-Z0-9_\-]+\.)+(com|org|edu|nz|au)') = 1
功能码
using System;
using Microsoft.SqlServer.Server;
using System.Text.RegularExpressions;
public partial class RegExBase
{
[SqlFunction(IsDeterministic = true, IsPrecise = true)]
public static int RegExMatch( string matchString , string pattern)
{
Regex r1 = new Regex(pattern.TrimEnd(null));
if (r1.Match(matchString.TrimEnd(null)).Success == true)
{
return 1 ;
}
else
{
return 0 ;
}
}
};
我希望这对你有帮助
有一种更新的有效方法是为 SQL 扩展 .Net 功能。
请在http://msdn.microsoft.com/en-us/magazine/cc163473.aspx查看详细信息
一个用于正则表达式匹配的现成源代码位于http://www.codeproject.com/Articles/42764/Regular-Expressions-in-MS-SQL-Server-2005-2008。
现在,一个简单的电子邮件正则表达式应该为您带来魔力希望对您有所帮助
几年前,我写了一个关于模式匹配的程序——电子邮件验证。希望对您有所帮助。