In meinem Modell, das ich den folgenden Code hinzugefügt habe, für die Validierung einer URL kann ein Benutzer eingeben:URL Validierung Schienen
validates :website, presence: true
validates :website, format: { with: URI.regexp }, if: 'website.present?'
Ich habe einen Test mit der einer ungültigen URL geschrieben:
http://example,nl
Wenn ich den Test durchführe, sagt die Validierung, dass dies eine gültige Eingabe ist. Ich habe es im Programm selbst ausprobiert und dies ist eine akzeptierte URI. Gibt es eine Möglichkeit, den URI.regex so einzustellen, dass dies eine ungültige URL ist?
Dank Robert, ich habe die folgende Regex hinzugefügt, die funktioniert: /\ A (? :(?: https? | Http): \/\ /) (?: \ S + (? :: \ S *) ? @)? (? :(?! 10 (?: \. \ D {1,3}) {3}) (?! 127 (?: \. \ D {1,3}) {3}) (?! 169 \ .254 (?: \. \ D {1,3}) {2}) (?! 192 \ .168 (?: \. \ D {1,3}) {2}) (?! 172 \. (?: 1 [6-9] | 2 \ d | 3 [0-1]) (?: \. \ D {1,3}) {2}) (?: [1-9] \ d? | 1 \ d \ d | 2 [01] \ d | 22 [0-3]) (?: \. (?: 1? \ d {1,2} | 2 [0-4] \ d | 25 [0-5])) {2} (?: \. (?: [1-9] \ d? | 1 \ d \ d | 2 [0-4] \ d | 25 [0-4])) | (?: (?: [az \ u00a1- \ uffff0-9] + -?) * [az \ u00a1- \ uffff0-9] +) (?: \. (?: [az \ u00a1- \ uffff0 -9] + -?) * [Az \ u00a1- \ uffff0-9] +) * (?: \. (?: [Az \ u00a1- \ uffff] {2,}))) (? :: \ d {2,5})? (?: \/[^ \ S] *)? \ Z/i – PieterB