正则表达式/ [^\d | \ - +||。+] / g是什么意思?

时间:2013-12-12 14:01:14

标签: javascript regex angularjs

以下代码使用正则表达式/[^\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 个答案:

答案 0 :(得分:10)

拥有一个测试这些东西的工具总是有用的。正则表达式比阅读要难得多。

以下a visualization表示特殊行为的表现如何:

regex.png

[]将匹配集合中找到的其中一个字符,^表示匹配不在集合中的任何,然后\d|\-+|\.+表示任意数字(即\d),|-+.以及重复的几个字符。

另外,为了对正则表达式有基本的了解,您可能需要check out this blog post