2013-12-12 4 views
-2

В следующем коде используется регулярное выражение /[^\d|\-+|\.+]/g. Я хочу знать, как работает код и что делает выражение. Кто-нибудь может мне помочь?Что означает регулярное выражение /[^d|-+|.+]/g?

app.$inject = ['$scope']; 

app.directive('format', ['$filter', function ($filter) { 
    return { 
    require: '?ngModel', 
    link: function (scope, elem, attrs, ctrl) { 
     if (!ctrl) return; 


     ctrl.$formatters.unshift(function (a) { 
      return $filter(attrs.format)(ctrl.$modelValue) 
     }); 


     ctrl.$parsers.unshift(function (viewValue) { 
      var plainNumber = viewValue.replace(/[^\d|\-+|\.+]/g, ''); 
      elem.val($filter('number')(plainNumber)); 
      return plainNumber; 
     }); 
    } 
    }; 
}]); 
+1

MDN Reg Exp https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions Узнайте, посмотрите на диаграмму, соедините ее вместе. – epascarello

+3

'' '' '' '' '' '' и '' 'внутри' [] 'заставляют его выглядеть так, как будто он делает что-то другое, чем то, что он на самом деле делает. –

ответ

10

Всегда полезно иметь инструмент для проверки этих вещей. Regex гораздо труднее читать, чем писать.

Вот a visualization о том, что регулярное выражение, в частности, ведет себя:

regex.png

[] будет соответствовать одному из символов, найденных в наборе, ^ значит соответствовать ничего , что это не в наборе, а затем \d|\-+|\.+ означает любую цифру (это \d), |, -, +, . и пару символов, которые были повторены.

Кроме того, для базового понимания регулярного выражения вы можете использовать check out this blog post.

+3

Интересный инструмент, не понимал, что что-то подобное даже существовало. – ElliotM

Смежные вопросы