From 1bfa93d954523cadaa9cb9fe819093e6287dcf07 Mon Sep 17 00:00:00 2001 From: Kevin Brogan Date: Tue, 28 Jan 2014 13:16:59 -0800 Subject: [PATCH 1/4] modify email validation regexp to match rfc1035 Previously, domain parts which began with a dash or a number, or ended with a dash, would be accepted as valid. --- src/ng/directive/input.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js index 85d0f22ddc85..5c4fa94a0d58 100644 --- a/src/ng/directive/input.js +++ b/src/ng/directive/input.js @@ -9,7 +9,7 @@ */ var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/; -var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i; +var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z]([a-z0-9-]*[a-z0-9])?(\.[a-z]([a-z0-9-]*[a-z0-9])?)*$/i; var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/; var inputType = { From 04e2c49ef08ef61525ab81d7749e4c24088f8b3d Mon Sep 17 00:00:00 2001 From: Kevin Brogan Date: Tue, 28 Jan 2014 13:21:18 -0800 Subject: [PATCH 2/4] updated email regexp tests to match rfc1035 --- test/ng/directive/inputSpec.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js index 668fa0b54a1e..0ed58ab4a60d 100644 --- a/test/ng/directive/inputSpec.js +++ b/test/ng/directive/inputSpec.js @@ -946,6 +946,10 @@ describe('input', function() { expect(EMAIL_REGEXP.test('a@b.museum')).toBe(true); expect(EMAIL_REGEXP.test('a@B.c')).toBe(true); expect(EMAIL_REGEXP.test('a@.b.c')).toBe(false); + expect(EMAIL_REGEXP.test('a@-b.c')).toBe(false); + expect(EMAIL_REGEXP.test('a@b-.c')).toBe(false); + expect(EMAIL_REGEXP.test('a@3b.c')).toBe(false); + expect(EMAIL_REGEXP.test('a@b')).toBe(true); }); }); }); From d523f899920636c1882b0fb1169bfd341e566439 Mon Sep 17 00:00:00 2001 From: Kevin Brogan Date: Wed, 19 Feb 2014 13:48:59 -0800 Subject: [PATCH 3/4] Update input.js changed the regular expression again as domain validation was modified by rfc1123 to allow numbers in the first character of a domain label. --- src/ng/directive/input.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js index 5c4fa94a0d58..455bf6d36e2a 100644 --- a/src/ng/directive/input.js +++ b/src/ng/directive/input.js @@ -9,7 +9,7 @@ */ var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/; -var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z]([a-z0-9-]*[a-z0-9])?(\.[a-z]([a-z0-9-]*[a-z0-9])?)*$/i; +var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i; var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/; var inputType = { From f05a3d63dce4956f2d182a38abc3dc6badd5fd0f Mon Sep 17 00:00:00 2001 From: Kevin Brogan Date: Wed, 19 Feb 2014 13:50:35 -0800 Subject: [PATCH 4/4] Update inputSpec.js modified test for domain labels beginning with numebrs to match rfc 1123 --- test/ng/directive/inputSpec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js index 0ed58ab4a60d..4277e26d0f21 100644 --- a/test/ng/directive/inputSpec.js +++ b/test/ng/directive/inputSpec.js @@ -948,7 +948,7 @@ describe('input', function() { expect(EMAIL_REGEXP.test('a@.b.c')).toBe(false); expect(EMAIL_REGEXP.test('a@-b.c')).toBe(false); expect(EMAIL_REGEXP.test('a@b-.c')).toBe(false); - expect(EMAIL_REGEXP.test('a@3b.c')).toBe(false); + expect(EMAIL_REGEXP.test('a@3b.c')).toBe(true); expect(EMAIL_REGEXP.test('a@b')).toBe(true); }); });