javascript在两个不同的索引处拆分字符串

时间:2013-07-20 04:00:38

标签: javascript regex

我有一张信用卡#for amex I.E. 371449635398431 我想分成3部分 3714 496353 98431 - 是否有一种简单的方法可以通过预定义的索引分割字符串(在本例中为4& 10),可能有一个简单的正则表达式函数?

4 个答案:

答案 0 :(得分:7)

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

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's answer启发):

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');

答案 1 :(得分:2)

尝试

var array = '371449635398431'.match(/(\d{4})(\d{6})(\d{5})/).splice(1)

答案 2 :(得分:0)

下面我简化了答案Arun P Johnyp.s.w.g中使用的正则表达式

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

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

console.log(a);

答案 3 :(得分:0)

在这里,我通过使用slice而不是substr(s中的输入字符串)改善了p.s.w.g的答案

[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);