From 12b6deb1ce99df64e2fc91a06bf05cd7f4a3a475 Mon Sep 17 00:00:00 2001
From: austingreco
Date: Fri, 29 Mar 2013 23:45:53 -0500
Subject: fix(ngPattern): allow modifiers on inline ng-pattern
Add support for regex modifiers on inline `ng-pattern`.
`ng-pattern="/regex/i"` now validates correctly.
Closes #1437
---
src/ng/directive/input.js | 8 +++++---
test/ng/directive/inputSpec.js | 12 ++++++++++++
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js
index 71456470..2574360c 100644
--- a/src/ng/directive/input.js
+++ b/src/ng/directive/input.js
@@ -439,7 +439,8 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
// pattern validator
var pattern = attr.ngPattern,
- patternValidator;
+ patternValidator,
+ match;
var validate = function(regexp, value) {
if (isEmpty(value) || regexp.test(value)) {
@@ -452,8 +453,9 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
};
if (pattern) {
- if (pattern.match(/^\/(.*)\/$/)) {
- pattern = new RegExp(pattern.substr(1, pattern.length - 2));
+ match = pattern.match(/^\/(.*)\/([gim]*)$/);
+ if (match) {
+ pattern = new RegExp(match[1], match[2]);
patternValidator = function(value) {
return validate(pattern, value)
};
diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js
index 4dcb79a3..d69be27c 100644
--- a/test/ng/directive/inputSpec.js
+++ b/test/ng/directive/inputSpec.js
@@ -476,6 +476,18 @@ describe('input', function() {
});
+ it('should validate in-lined pattern with modifiers', function() {
+ compileInput('');
+ scope.$digest();
+
+ changeInputValueTo('aB');
+ expect(inputElm).toBeValid();
+
+ changeInputValueTo('xx');
+ expect(inputElm).toBeInvalid();
+ });
+
+
it('should validate pattern from scope', function() {
compileInput('');
scope.regexp = /^\d\d\d-\d\d-\d\d\d\d$/;
--
cgit v1.2.3