diff options
| author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2025-07-12 15:54:38 +0900 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2025-07-12 07:07:05 +0000 |
| commit | 1add45e2a6e2ab62458f04eddf24898f61e7c01d (patch) | |
| tree | e400a09995955c1e820d90ee678ff55447cd2ec2 | |
| parent | 859d74279a41ff7aa1672a02e634120cdfd4c4e7 (diff) | |
[ruby/uri] Prohibit successive dots in email
https://github.com/ruby/uri/commit/32335923bf
| -rw-r--r-- | lib/uri/mailto.rb | 2 | ||||
| -rw-r--r-- | test/uri/test_mailto.rb | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/uri/mailto.rb b/lib/uri/mailto.rb index a15d2f0fba..bd63aa0334 100644 --- a/lib/uri/mailto.rb +++ b/lib/uri/mailto.rb @@ -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: # diff --git a/test/uri/test_mailto.rb b/test/uri/test_mailto.rb index 31adae2087..36e28df2e7 100644 --- a/test/uri/test_mailto.rb +++ b/test/uri/test_mailto.rb @@ -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' |
