From a48c0cbf796f81e0164092e2469ecf6357a835f9 Mon Sep 17 00:00:00 2001 From: Caitlin Potter Date: Tue, 21 Jan 2014 21:19:31 -0500 Subject: [PATCH] fix(input): use Chromium's email validation regexp This change uses the regexp from Chromium/Blink to validate emails, and corrects an error in the validation engine, which previously considered an invalid email to be valid. Additionally, the regexp was invalidating emails with capital letters, however this is not the behaviour recomended in the spec, or implemented in Chromium. Closes #5899 --- src/ng/directive/input.js | 2 +- test/ng/directive/inputSpec.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js index 706844ebc37d..53a8ddd4d70a 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-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/; +var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i; var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/; var inputType = { diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js index 26abceae1cfe..668fa0b54a1e 100644 --- a/test/ng/directive/inputSpec.js +++ b/test/ng/directive/inputSpec.js @@ -944,7 +944,8 @@ describe('input', function() { it('should validate email', function() { expect(EMAIL_REGEXP.test('a@b.com')).toBe(true); expect(EMAIL_REGEXP.test('a@b.museum')).toBe(true); - expect(EMAIL_REGEXP.test('a@B.c')).toBe(false); + expect(EMAIL_REGEXP.test('a@B.c')).toBe(true); + expect(EMAIL_REGEXP.test('a@.b.c')).toBe(false); }); }); });