diff --git a/core/js/sharedialogmailview.js b/core/js/sharedialogmailview.js index a2b44055dbbe..a2dd9850d4b1 100644 --- a/core/js/sharedialogmailview.js +++ b/core/js/sharedialogmailview.js @@ -137,7 +137,7 @@ if (email.length === 0) return true - return email.match(/([\w\.\-_]+)?\w+@[\w-_]+(\.\w+){1,}$/); + return email.match(/^[A-Za-z0-9\._%+-]+@(?:[A-Za-z0-9-]+\.)+[a-z]{2,}$/); }, sendEmails: function() { diff --git a/core/js/tests/specs/sharedialogmailviewSpec.js b/core/js/tests/specs/sharedialogmailviewSpec.js index 9559592dce75..9d79e70c1dda 100644 --- a/core/js/tests/specs/sharedialogmailviewSpec.js +++ b/core/js/tests/specs/sharedialogmailviewSpec.js @@ -100,6 +100,19 @@ describe('OC.Share.ShareDialogMailView', function() { }); }); + describe('validating addresses', function() { + it('works as expected', function() { + expect(view.validateEmail('Ada.Wong@umbrella.com')[0]).toEqual('Ada.Wong@umbrella.com'); + expect(view.validateEmail('Albert.Wesker@umbrella.sub-domain.com')[0]).toEqual('Albert.Wesker@umbrella.sub-domain.com'); + expect(view.validateEmail('Albert_Wesker@umbrella.sub-domain.com')[0]).toEqual('Albert_Wesker@umbrella.sub-domain.com'); + expect(view.validateEmail('Albert-Wesker@umbrella-new.sub-domain.com')[0]).toEqual('Albert-Wesker@umbrella-new.sub-domain.com'); + + expect(view.validateEmail('Jill.Valentine@umbrella..com')).toEqual(null); + expect(view.validateEmail('Jill.Valentine@um#rella.com')).toEqual(null); + expect(view.validateEmail('Jürgen.Sörensen@umbrella.com')).toEqual(null); + }); + }); + describe('sending emails', function() { var clock;