From 79e519fedaec54390a8bdacfb1926bfce57a1eb6 Mon Sep 17 00:00:00 2001 From: Caitlin Potter Date: Tue, 21 Jan 2014 21:19:31 -0500 Subject: 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 706844eb..53a8ddd4 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 26abceae..668fa0b5 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); }); }); }); -- cgit v1.2.3