为什么这个正则表达式不仅仅选择电子邮件地址?

时间:2012-12-10 20:09:53

标签: regex

RegExr示例:http://regexr.com?333h5

正则表达式:

_email=(.+)[^\s"]

示例内容:

http://example.com/index.php?package=icard&action=show_birthday_card&cid=3376&name=Gina&unsubscribe_email=myEmail1234@aol.com
[ Unsubscribe from iCard: http://example.com/index.php?package=icard&action=unsubscribe_card&unsubscribe_email=myEmail1234@aol.com ]


--1q2w3e4r5t6y7u8i9o0p1q
Content-Type: text/html;

<table align=""center"">
    <tr>
        <td>
            <div style=""background:#fff; border:10px solid #2d50d6; padding:10px; width:600px;"">
                <h4 style=""background:#2d50d6; color:#fff; border:18px solid #2d50d6; margin-bottom:10px; font-family:Arial, Helvetica, sans-serif; font-size:14px; text-align:center;"">Happy Birthday Gina!</h4>
                <a href=""http://example.com/index.php?package=icard&action=show_birthday_card&cid=3376&name=Gina&unsubscribe_email=myEmail1234@aol.com""><img src=""http://example.com/images/brands/chiro/cards/img_46a6924710bcc_birthdayparty.gif"" alt="""" title=""Happy+Birthday+Gina%21"" width=""600"" style=""border:0; margin-bottom:10px; width:600px; height:150px;"" /></a>
                <p style=""color:#000; font-family:Arial, Helvetica, sans-serif; font-size:12px;"">We hope all your birthday dreams and wishes come true!</p>

2 个答案:

答案 0 :(得分:3)

_email=(.+)[^\s"]

表示“_email =”后跟任意类型的1-many字符,后跟单个字符既不是空格也不是引号。

我认为你在寻找的是:

_email=[^\s"]+

“_email =”后面跟着1-many字符既不是空格也不是引号。

答案 1 :(得分:1)

这不只是选择电子邮件地址,因为+是一个贪婪的运算符,并会尝试匹配尽可能多的字符。

电子邮件地址匹配是一个相当常见的正则表达式问题,因此有很多解决方案,其中一个包含在how to use regular expressions的精彩教程中。我建议使用其中一种经过良好测试的模式......

_email=(\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b)