[ruby/uri] lib/uri/mailto.rb (EMAIL_REGEXP): use assertions surrounding the local part instead of a character class

2d7d2d9988
This commit is contained in:
Nikita Levchuk 2024-12-06 11:56:03 +01:00 committed by git
parent 0685e8caf9
commit c97eba9bcd
2 changed files with 10 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(?!\.)[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

@ -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