From 79e519fedaec54390a8bdacfb1926bfce57a1eb6 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 Closes #5924 --- 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); }); }); });