URI::MailTo::EMAIL_REGEXP matches whole strings but URI::RFC2396_PARSER.make_regexp matches partial strings
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Esamina il punto di ingresso pubblico URI::RFC2396_PARSER.make_regexp e la sua interazione con URI::MailTo::EMAIL_REGEXP; determina innanzitutto la semantica di matching esistente e i test disponibili. Done dovrebbe preservare il comportamento predefinito attuale fornendo al contempo un’opzione esplicita di corrispondenza completa la cui copertura rifiuti gli spazi bianchi finali.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Ruby
- Stelle
- 125
- Fork
- 65
- Merge medio
- 6h 4m
- PR unite (30g)
- 2
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ruby/uri
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
-
upstream contact for Debian Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 25/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
riscv/riscv-unified-db#2626 ·
-
Component: GLib
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
ds-drift
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
we-promise/sure#3693 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
simp/pupmod-simp-simp#395 ·