使用AngularJS中的正则表达式格式化输入数据

时间:2014-07-10 10:34:20

标签: regex angularjs dataformat

我有以下格式的一些数据。使用正则表达式我想只显示前两个令牌。

例如 AB.JKL .MNO.XYZ => AB.JKL

AB.JKL.MNO.XYZ
KJ.KJLJ.KD.IUOI
KLJ.LK.LJ.JL.OLJ.JLL

注意:我使用的是AngularJS我可以直接在html中使用Angularjs表达式来实现这一点,但是html是一个常见的模板,其他数据也在显示,我不想破坏它。因此,我想在控制器中对数据应用正则表达式。

1 个答案:

答案 0 :(得分:2)

正则表达式:

如果您想获取<letters><dot><letters>格式,此正则表达式将在开头捕获: ^([^.]+\.[^.]+)

同样的事情,但在你的字符串的末尾: ([^.]+\.[^.]+)$

<强>角逐

我对角度不太熟悉,但据我所知,你可以创建自己的过滤器类型。

<div ng-app='myApp' ng-controller="Main">
    first token: {{name | firstToken}} </br>
    last token: {{name | lastToken}}</br>
    any Regex: {{name | regex:"[^.]+$"}}</br>
</div>
var myApp = angular.module('myApp', []);
myApp.filter('regex', function () {
    return function (input, regex) {
        if (!input) return '';
        var matches = input.match(regex);
        if (matches) return matches[0];
        return "";
    };
}).filter('firstToken', function () {
    return function (input) {
        if (!input) return '';
        var matches = input.match(/([^.]+.[^.]+)/);
        if (matches) return matches[0];
        return "";
    };
});

function Main($scope) {
    $scope.name = 'AB.JKL.MNO.XYZ';
}

玩得开心,玩它: http://jsfiddle.net/lcoderre/WfuAh/97/