diff --git a/app/models/user_profile.rb b/app/models/user_profile.rb index 300978f1c8a..6dfd6855d63 100644 --- a/app/models/user_profile.rb +++ b/app/models/user_profile.rb @@ -4,7 +4,7 @@ class UserProfile < ActiveRecord::Base # This is not very picky about most DNS labels (the bits between the # periods), but isn't taking much guff from the TLD. No leading # digit, and no hyphens unless IDN. - WEBSITE_REGEXP = /(^$)|((^(http|https):\/\/)?([a-z0-9][a-z0-9-]*\.)+([a-z][a-z0-9]+|xn--[a-z0-9-]+)(\/.*)?$)/ix + WEBSITE_REGEXP = /(^$)|(^(https?:\/\/)?([a-z0-9][a-z0-9-]*\.)+([a-z][a-z0-9]+|xn--[a-z0-9-]+)(\/.*)?$)/i validates :bio_raw, length: { maximum: 3000 } validates :website, format: { with: WEBSITE_REGEXP }, allow_blank: true, if: Proc.new { |c| c.new_record? || c.website_changed? } diff --git a/spec/models/user_profile_spec.rb b/spec/models/user_profile_spec.rb index 5e059bb5861..bd9a13616ef 100644 --- a/spec/models/user_profile_spec.rb +++ b/spec/models/user_profile_spec.rb @@ -59,6 +59,7 @@ describe UserProfile do it "ensures website is valid" do expect(Fabricate.build(:user_profile, user: user, website: "http://https://google.com")).not_to be_valid + expect(Fabricate.build(:user_profile, user: user, website: "http://discourse.productions")).to be_valid expect(Fabricate.build(:user_profile, user: user, website: "https://google.com")).to be_valid end