[ruby/uri] Prohibit successive dots in email

https://github.com/ruby/uri/commit/32335923bf
This commit is contained in:
Nobuyoshi Nakada 2025-07-12 15:54:38 +09:00 committed by git
parent 859d74279a
commit 1add45e2a6
2 changed files with 5 additions and 1 deletions

View File

@ -52,7 +52,7 @@ module URI
HEADER_REGEXP = /\A(?<hfield>(?:%\h\h|[!$'-.0-;@-Z_a-z~])*=(?:%\h\h|[!$'-.0-;@-Z_a-z~])*)(?:&\g<hfield>)*\z/
# practical regexp for email address
# https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
EMAIL_REGEXP = /\A(?!\.)[a-zA-Z0-9.!\#$%&'*+\/=?^_`{|}~-]+(?<!\.)@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\z/
EMAIL_REGEXP = /\A(?!\.)(?!.*\.{2})[a-zA-Z0-9.!\#$%&'*+\/=?^_`{|}~-]+(?<!\.)@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\z/
# :startdoc:
#

View File

@ -166,6 +166,10 @@ class URI::TestMailTo < Test::Unit::TestCase
u.to = 'n.@invalid.email'
end
assert_raise(URI::InvalidComponentError) do
u.to = 'n..t@invalid.email'
end
# Invalid host emails
assert_raise(URI::InvalidComponentError) do
u.to = 'a@.invalid.email'