我有一些以下格式的数据。通过使用正则表达式,我只想显示前两个标记。
例如AB.JKL .MNO.XYZ => AB.JKL
AB.JKL.MNO.XYZ
KJ.KJLJ.KD.IUOI
KLJ.LK.LJ.JL.OLJ.JLL
注意:我正在使用 AngularJS,我可以直接在 html 中使用 Angularjs 表达式来实现这一点,但 html 是一个通用模板,其中还显示了其他数据,我不想破坏它。因此我想对控制器中的数据应用正则表达式。
我有一些以下格式的数据。通过使用正则表达式,我只想显示前两个标记。
例如AB.JKL .MNO.XYZ => AB.JKL
AB.JKL.MNO.XYZ
KJ.KJLJ.KD.IUOI
KLJ.LK.LJ.JL.OLJ.JLL
注意:我正在使用 AngularJS,我可以直接在 html 中使用 Angularjs 表达式来实现这一点,但 html 是一个通用模板,其中还显示了其他数据,我不想破坏它。因此我想对控制器中的数据应用正则表达式。
正则表达式:
如果要获取<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/