【发布时间】:2011-07-01 03:24:51
【问题描述】:
我在 SO 中发现了很多正则表达式电子邮件验证,但我没有找到任何可以接受空字符串的方法。这只能通过正则表达式吗?只接受空字符串或电子邮件?我只想在 Regex 上使用它。
【问题讨论】:
我在 SO 中发现了很多正则表达式电子邮件验证,但我没有找到任何可以接受空字符串的方法。这只能通过正则表达式吗?只接受空字符串或电子邮件?我只想在 Regex 上使用它。
【问题讨论】:
这个正则表达式模式将匹配一个空字符串:
^$
这将(粗略地)匹配电子邮件或空字符串:
(^$|^.*@.*\..*$)
【讨论】:
^ 匹配,在这种情况下,您实际上是在寻找电子邮件或在字符串中间什么都没有。对于这个(email_regex)? 更合适。
^$ 不起作用,但 ^(?!.) 起作用:[^ 字符串开头,(?!) 负前瞻,. 任何字符 - 不包括换行]
匹配空字符串或电子邮件
(^$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
匹配空字符串或电子邮件,但也匹配任意数量的空格
(^\s*$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
查看更多关于匹配正则表达式的电子邮件:
【讨论】:
不要将电子邮件与正则表达式匹配。它是extremely ugly and long and complicated,您的正则表达式解析器可能无论如何都无法处理它。尝试找到一个库例程来匹配它们。如果您只想解决匹配电子邮件地址的实际问题(也就是说,如果您想要(通常)工作的错误代码),请使用其他人提交的 regular-expressions.info 链接.
至于空字符串,^$被多人提及,可以正常工作。
【讨论】:
上面的答案有效($ 为空),但我刚刚尝试过,它也可以像这样留空:
/\A(INTENSE_EMAIL_REGEX|)\z/i
相反的顺序
/\A(|INTENSE_EMAIL_REGEX)\z/i
【讨论】:
我更喜欢/^\s+$|^$/gi 来匹配空格和空格。
console.log(" ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));
【讨论】:
这将解决,它将接受空字符串或确切的电子邮件 ID
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
【讨论】:
如果您在 rails 中使用它 - 您可以设置 activerecord 验证
allow_blank: true
作为:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }
【讨论】: