diff options
| -rw-r--r-- | lib/uri/mailto.rb | 2 | ||||
| -rw-r--r-- | test/uri/test_mailto.rb | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/uri/mailto.rb b/lib/uri/mailto.rb index c5a5e4ae26..a15d2f0fba 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(?!\.)[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 d2e9648299..e7c04ef068 100644 --- a/test/uri/test_mailto.rb +++ b/test/uri/test_mailto.rb @@ -141,6 +141,11 @@ class URI::TestMailTo < Test::Unit::TestCase def test_check_to u = URI::MailTo.build(['joe@example.com', 'subject=Ruby']) + # Valid emails + u.to = 'a@valid.com' + assert_equal(u.to, 'a@valid.com') + + # Invalid emails assert_raise(URI::InvalidComponentError) do u.to = '#1@mail.com' end @@ -156,6 +161,10 @@ class URI::TestMailTo < Test::Unit::TestCase assert_raise(URI::InvalidComponentError) do u.to = 'hello.@invalid.email' end + + assert_raise(URI::InvalidComponentError) do + u.to = 'n.@invalid.email' + end end def test_to_s |
