正则表达式在不同条件的字符串中两次替换前一个零

时间:2017-05-20 01:24:29

标签: javascript php angularjs regex reactjs

我有字符串XY4PQ43,我希望正则表达式替换应该在JavaScript中输出XY04PQ0043。对于字符串中的第一个数字我想要零前缀,如果它的单个数字使其为 2个数字,并且第二个数字在字符串中我想要前缀为零如果它小于 4位数。低于正则表达式的预期输出。

  • AB 1 CD 123 => AB的 01 CD的 0123
  • MN 12 XYZ 1 => MN 12 XY 0001
  • LJ99P1234 => IJ的 99 P 1234

任何jsfiddle或codepen示例都是

2 个答案:

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