我使用以下正则表达式进行电子邮件验证:
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
问题是.@xyz.com
也会得到验证。
我需要在正则表达式中更改哪些内容,以便在[a-z]
之前检查至少有一个@
字母?
答案 0 :(得分:1)
您可以确保该电子邮件不是以.
开头(?!\.)
前瞻,并且您可以确保@
之前有一封信(?<=[a-z])
后视:
\A(?!\.)[\w+\-.]+(?<=[a-z])@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z
^^^^^^ ^^^^^^^^^^
请参阅demo
答案 1 :(得分:1)
我不会谈论“不要使用regexp电子邮件”。让我猜一下:你可能也不希望随后有两个点。对于表达式的前面部分,我将使用/\A(\.?\w+)+@.../
:
['.', '.a', 'b.', 'c', 'a..b'].map { |s| s =~ /\A(\.?[\-\w]+)+\z/ }
#⇒ => [nil, 0, nil, 0, nil]
希望它有所帮助。