/ / L'espressione regolare di Ruby per una stringa con solo lettere minuscole, numeri e trattini, almeno una lettera, non inizia o termina con un trattino [chiuso] - ruby, regex

Espressione regolare ruby ​​per una stringa con solo lettere minuscole, numeri e trattini, almeno una lettera, non inizia o termina con un trattino [chiuso] - ruby, regex

Alla ricerca di un regex di rubino per soddisfare queste condizioni:

  • Solo lettere minuscole, numeri e trattini
  • Almeno una lettera
  • Non inizia o termina con un trattino

Modifica: Wow, 5 downvotes all'istante. Non so come renderlo più semplice, ho bisogno di un'espressione regolare che permetta alle stringhe di passare con quelle condizioni Molto facile da capire cosa ho detto.

Quindi per esempio:

aAaaa - (fail, capitale)

33994 - (fail, nessuna lettera)

333_3423 - (fail, contiene un carattere di sottolineatura)

-aaa - (fallire, inizia con un trattino)

aaa- - (fail inizia con un trattino)

aa8-d (SUCCESSO)

aabsdg323-sdf (SUCCESSO)

Così via.

risposte:

2 per risposta № 1

La soluzione che ho trovato è quella di combinare i tre requisiti:

def subdomain_is_valid
message = "can only contain lowercase letters, numbers and dashes. It must contain at least one letter. It may not start or end with a dash."

# It can only contain lowercase letters, numbers and dashes
if !subdomain.match(/^[a-z0-9-]+$/)
errors.add(:subdomain, message)

# It must contain at least one letter
elsif !subdomain.match(/(?=.*[a-z])/)
errors.add(:subdomain, message)

# It may not start or end with a dash.
elsif !subdomain.match(/^[^-].*[^-]$/)
errors.add(:subdomain, message)
end
end