1

次の形式のデータがあります。正規表現を使用して、最初の 2 つのトークンのみを表示したいと考えています。

たとえば、AB.JKL .MNO.XYZ => AB.JKL

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

注: 私は AngularJS を使用しています。Angularjs 式を html で直接使用してこれを実現できますが、html は他のデータも表示される一般的なテンプレートであり、破損したくありません。したがって、コントローラーのデータに正規表現を適用したいと思います。

4

1 に答える 1

2

正規表現について:

フォーマットを取得したい場合<letters><dot><letters>、この正規表現は最初にキャプチャします: ^([^.]+\.[^.]+)

同じことですが、文字列の最後に: ([^.]+\.[^.]+)$

角度的に

私はAngularにあまり詳しくありませんが、私が理解していることから、独自のタイプのフィルターを作成できます。

<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/

于 2014-07-10T14:23:53.283 に答える