当前位置: 首页 > 面试题库 >

使用Regex的SQL电子邮件验证功能

唐繁
2023-03-14
问题内容

我正在尝试在SQL Server 2005中创建一个函数,以检查电子邮件是否为带有正则表达式的有效格式。

这是我到目前为止的内容:

CREATE FUNCTION isValidEmailFormat
(
    @Email varchar(100)
)
RETURNS bit
AS
BEGIN
   DECLARE @Result bit

   SET @Result = (SELECT CASE
                     WHEN @Email LIKE '%[a-zA-Z0-9_\-]+@([a-zA-Z0-9_\-]+\.)+  (com|org|edu|nz|au])%' 
                       THEN 1
                       ELSE 0
                  END AS Valid)
   RETURN @Result
END

我的正则表达式做错什么了吗?还是我需要做更多的工作才能将varchar与正则表达式进行比较?

-编辑-

现在,即使电子邮件格式本身正确,我输入的任何字符串都将返回0。


问题答案:

简短的答案是不,这是无法完成的。LIKE的语法与正则表达式不同(并且功能不如正则表达式)。

但是您可以跳到.Net并在那里进行匹配。您可以VBScript.RegExp使用sp_OACreate实例化内部T-SQL并使用它。

CREATE FUNCTION dbo.isValidEmailFormat
(
    @Email varchar(100)
)
RETURNS bit
AS
BEGIN
    DECLARE @pattern varchar(4000)
    SET @pattern = '[a-zA-Z0-9_\-]+@([a-zA-Z0-9_\-]+\.)+(com|org|edu|nz|au)'
    DECLARE @Result bit

    DECLARE @objRegexExp INT
    EXEC sp_OACreate 'VBScript.RegExp', @objRegexExp OUT

    EXEC sp_OASetProperty @objRegexExp, 'Pattern', @pattern
    EXEC sp_OASetProperty @objRegexExp, 'IgnoreCase', 1
    EXEC sp_OASetProperty @objRegexExp, 'MultiLine', 0
    EXEC sp_OASetProperty @objRegexExp, 'Global', false
    EXEC sp_OASetProperty @objRegexExp, 'CultureInvariant', true

    EXEC sp_OAMethod @objRegexExp, 'Test', @Result OUT, @Email

    EXEC sp_OADestroy @objRegexExp

    RETURN @Result
END

快看一下Regex电子邮件验证错误-使用JavaScript来查看您是否希望对允许使用哪些字符的限制有所减少。



 类似资料:
  • 不久前,我把这个问题发到了收件人的地址上,并得到了我的答案。尽管如此,我还是决定继续使用PHPMailer,我不能对ñ做任何事情,但要排除带有ñ字符的电子邮件,我首先使用javascript验证电子邮件,使用我很久以前在这个网站上找到的这个正则表达式,它工作得非常好,但我希望它也排除带有ñ字符的电子邮件。 我很难理解正则表达式,有一次我在stackoverflow上找到了一个很好的解释,但是我丢失

  • 我正在提示我的应用程序用户提供电子邮件凭据。 在用户插入电子邮件并通过后,我想验证该帐户。 我正在使用javax。邮政有没有办法验证帐户?只确保凭据确实有效——否则我想显示一个无效用户并传递消息。 也许是某种表演方式: 并在不发送任何内容的情况下检查身份验证异常。

  • 我有一张登记表,上面有姓名、电子邮件和密码。注册时,会向用户的电子邮件地址发送一个确认链接。但在发送链接之前,我需要验证电子邮件地址。我使用了: 它显示的任何电子邮件都有效,例如, 我从获得的电子邮件并将其存储在中。 我到底要怎么做才能让它成功?

  • 每当我在Firebase中使用电子邮件/密码身份验证提供程序时,提供程序都会在成功注册时发送一个无记名令牌,即使是。是否有一种开箱即用的方法将电子邮件/密码身份验证提供程序配置为在用户验证其电子邮件地址之前不发送无记名令牌(并返回403错误)? 请注意,我知道如何创建用户、登录用户、发送验证电子邮件等。。。使用firebase v9。x通过firebase/auth中的方法创建用户(使用Email

  • 如何使用firebase中的验证电子邮件验证使用电子邮件和密码登录的用户?这背后的逻辑是如何工作的,它在代码中会是什么样子? 解决方案/帮助:对于那些仍在寻找答案的人,我找到了这篇文章 堆栈溢出 帖子

  • 我是grails新手,正在用grails开发一个web应用程序。 在我的注册页面中,我正在获取用户的电子邮件ID,并且我需要发送带有身份验证链接的邮件。 http://grails.org/plugin/mail http://grails.org/plugin/email-confirmation 我参考了这些网页和许多其他网页来完成这项任务。但问题是,我的电子邮件没有发送。 我使用过 邮件设置