正则表达式,电子邮件验证从文本框中获取用户输入

Posted

技术标签:

【中文标题】正则表达式,电子邮件验证从文本框中获取用户输入【英文标题】:Regex, email validation taking user input from textbox 【发布时间】:2017-10-14 01:04:59 【问题描述】:

我只是尝试使用文本框验证用户输入,我认为验证有效。但是,它只允许我一次输入一个字符。在他们输入完整的电子邮件地址之前,我不确定如何一次检查一个字符。

我认为这是每次输入字符时都会检查,这将导致失败,直到它被复制和粘贴。

        string strRegex = @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\\\|~\w])*)(?<=[0-9a-z])@))" +
            @"(?(\[)(\[(\d1,3\.)3\d1,3\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]0,22[a-z0-9]))$";

        Regex re = new Regex(strRegex);
        if (re.IsMatch(txtEmail.Text) || txtEmail.Text == "" || txtEmail.Text.Length > 100 && txtEmail.Text.Length < 10)
        
            MessageBox.Show("Thanks");

        

        else
        
            MessageBox.Show("Please enter a valid email address");



        

    

【问题讨论】:

我更喜欢使用MailAddress 代替用户名和域名:var email = new MailAddress(string_to_check),但您可能还想添加 TLD 检查(对 TLD 使用特定的正则表达式)。 谢谢,但我将如何将它实现到我自己的函数中? 我认为您可以在使用正则表达式检查 TLD 部分后实现它,它将有效字符串作为参数传递给 MailAddress 块中的 MailAddress 实例。如果是无效的电子邮件,请使用catch 块来抛出带有MessageBox.Show 的无效电子邮件。 那么是在验证之后是 if 语句吗?还是之前? 【参考方案1】:

可能是您正在验证 keyup、keydown 事件。验证更改事件。

如果您在 winform 应用程序中执行此操作,则可以在 focusleave 事件中执行此操作

【讨论】:

【参考方案2】:

@Tetsuya Yamamoto 这是我目前所拥有的,但我不确定这是否是你的意思

        string strRegex = @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\\\|~\w])*)(?<=[0-9a-z])@))" +
        @"(?(\[)(\[(\d1,3\.)3\d1,3\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]0,22[a-z0-9]))$";

        Regex re = new Regex(strRegex);
        if (re.IsMatch(txtEmail.Text) || txtEmail.Text == "" || txtEmail.Text.Length > 100 && txtEmail.Text.Length < 10)
        
            try
            
                var email = new MailAddress(strRegex);
                MessageBox.Show("Thanks");
            
            catch (FormatException)
            
                MessageBox.Show("Wrong");


            

【讨论】:

以上是关于正则表达式,电子邮件验证从文本框中获取用户输入的主要内容,如果未能解决你的问题,请参考以下文章

251 正则表达式

Jquery 验证引擎正则表达式

java.javascript问题:js验证不能输入汉字,就是一个文本框中,不允许输入汉字,正则表达式怎么写?

从文本框中删除除电子邮件地址之外的所有内容

js验证如何限制文本框只能输入数字

正则表达式—简单验证