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