我有一个16位数的属性,例如返回(1234123412341234)。我希望它在我的UI上呈现一个空格,例如每4个数字字符( 1234 1234 1234)。我使用的是角度JS,所以我正在寻找一种方法来完成这个任务。我很确定这是一个定制的角度过滤器或正则表达式相关的,但我的知识和如何实现它是有限的。
发布于 2018-09-06 14:04:24
AngularJS过滤器易于安装。只需接受一个参数并在其上应用任何JS格式。下面是一个有用的例子:
var app = angular.module('myApp', []);
app.filter('myFilter', function() {
return function(x) {
return x.toString().replace(/\d{4}(?=.)/g, '$& '); // your format filter here
};
});
app.controller('demoCtrl', function($scope) {
$scope.test = 1234123412341234;
});<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="demoCtrl">
{{test | myFilter}}
</div>
</body>
</html>
(我从尼娜·肖尔兹的答案中提取了regex代码,请随意使用其他regex)
发布于 2018-09-06 13:55:45
您可以使用正则表达式和前瞻性。
积极展望在等号之后查找模式,但不包括在匹配中。
x(?=y) 只有当'x‘后面跟着'y’时才匹配'x‘。这就是所谓的前瞻性。 例如,只有在
/Jack(?=Sprat)/后面跟着'Sprat‘时,它才会匹配'Jack’。只有在后面跟着'Sprat‘或'Frost’时,/Jack(?=Sprat|Frost)/才能匹配'Jack‘。然而,“斯普拉特”和“霜冻”都不是比赛结果的一部分。
function format(s) {
return s.toString().replace(/\d{4}(?=.)/g, '$& ');
}
console.log(format(1234123412341234));
发布于 2018-09-06 13:54:56
您可以使用match(),然后使用带空格的join()。
var str = '1234123412341234';
var res = str.match(/.{1,4}/g).join(' ');
console.log(res);
https://stackoverflow.com/questions/52205639
复制相似问题