6

我有一张信用卡 # 用于美国运通 IE 371449635398431,我想将其拆分为 3 部分3714 496353 98431 - 有没有一种简单的方法可以通过预定义的索引(在本例中为 4 和 10)拆分字符串,可能带有简单的正则表达式函数?

4

4 回答 4

8

我真的不认为这里需要正则表达式。如果您知道需要拆分的索引,则可以这样做:

var input = '371449635398431'
var part1 = input.substr(0, 4);
var part2 = input.substr(4, 6);
var part3 = input.substr(10);

但是,如果必须使用正则表达式,您可以这样做:

var input = '371449635398431'
var match = /^(\d{4})(\d{6})(\d{5})$/.exec(input);
var part1 = match[1];
var part2 = match[2];
var part3 = match[3];

要在每个部分之间插入空格,您可以这样做:

var match = input.substr(0, 4) + ' ' + input.substr(4, 6) + ' ' + input.substr(10);

或这个:

var match = [ input.substr(0, 4), input.substr(4, 6), input.substr(10) ].join(' ');

或者这个(灵感来自Arun P Johny的回答):

var match = /^(\d{4})(\d{6})(\d{5})$/.exec(input).slice(1).join(' ');

或这个:

var match = input.replace(/^(\d{4})(\d{6})(\d{5})$/, '$1 $2 $3');
于 2013-07-20T04:03:37.173 回答
2

尝试

var array = '371449635398431'.match(/(\d{4})(\d{6})(\d{5})/).splice(1)
于 2013-07-20T04:04:11.813 回答
0

下面我简化了答案Arun P Johnypswg中使用的正则表达式

'371449635398431'.match(/(.{4})(.{6})(.{5})/).splice(1)

var a = '371449635398431'.match(/(.{4})(.{6})(.{5})/).splice(1);

console.log(a);

于 2019-01-10T13:29:30.560 回答
0

在这里,我通过使用 slice 而不是 substr(s 中的输入字符串)来改进pswg答案

[s.slice(0,4), s.slice(4,10), s.slice(10)]

let s="371449635398431"; 
let a=[s.slice(0,4), s.slice(4,10), s.slice(10)]

console.log(a);

于 2019-01-10T13:34:34.357 回答