我有字符串XY4PQ43,我希望正则表达式替换应该在JavaScript中输出XY04PQ0043。对于字符串中的第一个数字我想要零前缀,如果它的单个数字使其为 2个数字,并且第二个数字在字符串中我想要前缀为零如果它小于 4位数。低于正则表达式的预期输出。
任何jsfiddle或codepen示例都是
答案 0 :(得分:1)
对于该给定字符串,您可以应用以下正则表达式:
var _str = 'AB1CD123';
_str.match(new RegExp(/([A-Z]{2})([0-9]{1,2})([A-Z]{2})([0-9]{1,4})/))
它输出一个数组,其值从1到4匹配,其中2和4是您需要管理的值。对于这些值,您可以应用逻辑 - 添加前导零 - 通过检查它们的长度并在之后合并它们。在浏览器控制台中试用它。
注意:它适用于此特定示例。对于其他示例,您需要调整匹配的长度。
答案 1 :(得分:1)
试试这个。
function format(text) {
let match = /^(.*?)(\d+)(.*?)(\d+)$/.exec(text);
return [
match[1],
match[2].padStart(2, '0'),
match[3],
match[4].padStart(4, '0'),
].join('');
}
console.log(format('AB1CD123'));
console.log(format('MN12XYZ1'));
console.log(format('LJ99P1234'));