URI::MailTo::EMAIL_REGEXP matches whole strings but URI::RFC2396_PARSER.make_regexp matches partial strings
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Revisa el punto de entrada público URI::RFC2396_PARSER.make_regexp y su interacción con URI::MailTo::EMAIL_REGEXP; determina primero la semántica de coincidencia existente y las pruebas disponibles. Done debe conservar el comportamiento predeterminado actual y proporcionar una opción explícita de coincidencia completa cuya cobertura rechace los espacios en blanco finales.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The way to test if a string is a valid email address is to directly use URI::MailTo::EMAIL_REGEXP
require 'uri'
puts URI::MailTo::EMAIL_REGEXP.match?('me@example.com') # true
puts URI::MailTo::EMAIL_REGEXP.match?('me@example.com ') # false (trailing space)
However, the correct way to validate that a string is a valid URL is to wrap the regex in anchors:
require 'uri'
puts /\A#{URI::RFC2396_PARSER.make_regexp}\z/.match?('https://example.com/') # true
puts /\A#{URI::RFC2396_PARSER.make_regexp}\z/.match?('https://example.com/ ') # false (trailing space)
If I directly use make_regexp, that second string matches because of a partial match.
require 'uri'
puts URI::RFC2396_PARSER.make_regexp.match?('https://example.com/ ') # true (trailing space)
Same behavior if I pass schemes into make_regexp or use the too. I'm on Ruby 4.0.1 but I don't think this behavior changed recently.
Would it be okay if I made a PR adding a keyword argument to make_regexp? It would get called like:
URI::RFC2396_PARSER.make_regexp(full_match: true).match?('https://example.com/ ') # true (trailing space)
I figured changing the default behavior could be a breaking change for a lot of people and that doesn't feel worth it.
- Lenguaje dominante
- Ruby
- Estrellas
- 125
- Forks
- 65
- Merge medio
- 6 h 4 min
- PR fusionados (30 d)
- 2
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ruby/uri
-
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
-
upstream contact for Debian Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 25/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
riscv/riscv-unified-db#2626 ·
-
Component: GLib
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
ds-drift
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
we-promise/sure#3693 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
simp/pupmod-simp-simp#395 ·