以下代码使用正则表达式/[^\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;
});
}
};
}]);
答案 0 :(得分:10)
拥有一个测试这些东西的工具总是有用的。正则表达式比阅读要难得多。
以下a visualization表示特殊行为的表现如何:
[]
将匹配集合中找到的其中一个字符,^
表示匹配不在集合中的任何,然后\d|\-+|\.+
表示任意数字(即\d
),|
,-
,+
,.
以及重复的几个字符。
另外,为了对正则表达式有基本的了解,您可能需要check out this blog post。