Угловой динамический ngPattern

Я пытаюсь реализовать динамический ngPattern.

Мое регулярное выражение изменяется, когда пользователь нажимает кнопку или выбирает значение из раскрывающегося списка.

Но почему-то это не работает. Ниже приведен код.

 app.controller('testController',function(){

    $scope.pattern = new RegExp('^\w{1,10}$');

    $scope.changePattern = function () {
        $scope.pattern = new RegExp('^\d{5}$');
    };

 });

Но когда я пробую что-то подобное, это работает.

    $scope.pattern = /^\w{1,10}$/;

    $scope.changePattern = function () {
        $scope.pattern = /^\d{5}$/;
    };

Я не уверен, почему использование нового RegExp() не работает. Причина, по которой мне пришлось использовать new RegExp(), заключается в том, что я получаю это в ответе JSON в виде строки.


person Muralidharan R    schedule 05.05.2015    source источник


Ответы (1)


Это связано с тем, что обратная реакция (\) — это специальный символ, который вам нужно экранировать с помощью "\\" при построении строки:

$scope.pattern = new RegExp('^\\w{1,10}$');

Так что это не имеет ничего общего ни с RegExp, ни с ng-pattern.

person New Dev    schedule 05.05.2015
comment
Спасибо. Это спасло меня когда-то. Не понял этого из-за escape-символа. - person Muralidharan R; 05.05.2015