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

Javascript 在具有不同条件的字符串中两次替换前零的正则表达式,javascript,php,angularjs,regex,reactjs,Javascript,Php,Angularjs,Regex,Reactjs,我有字符串XY4PQ43,我希望regex replace应该以JavaScript输出XY04PQ0043。对于字符串中的第一个数字,如果其单个数字使其成为2个数字,我希望前缀为零;对于字符串中的第二个数字,如果其小于4个数字,我希望前缀为零。低于正则表达式的预期输出 AB1CD123=>AB01CD0123 MN12XYZ1=>MN12XY0001 LJ99P1234=>IJ99P1234 对于给定字符串,任何预先提供的JSFIDLE或codepen示例都可以应用以下正则表达式: var

我有字符串XY4PQ43,我希望regex replace应该以JavaScript输出XY04PQ0043。对于字符串中的第一个数字,如果其单个数字使其成为2个数字,我希望前缀为零;对于字符串中的第二个数字,如果其小于4个数字,我希望前缀为零。低于正则表达式的预期输出

  • AB1CD123=>AB01CD0123
  • MN12XYZ1=>MN12XY0001
  • LJ99P1234=>IJ99P1234

对于给定字符串,任何预先提供的JSFIDLE或codepen示例都可以应用以下正则表达式:

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是需要管理的值。对于这些值,您可以通过检查前导零的长度并随后合并它们来应用逻辑-添加前导零。在浏览器控制台中尝试

注意:它适用于此特定示例。对于其他示例,您需要调整匹配的长度。

试试这个

函数格式(文本){
让match=/^(.*)(\d+)(.*)(\d+)$/.exec(文本);
返回[
匹配[1],
匹配[2]。焊盘起始(2,'0'),
匹配[3],
匹配[4]。焊盘起始(4,'0'),
].加入(“”);
}
console.log(格式('AB1CD123'));
log(格式('MN12XYZ1');

log(格式('LJ99P1234')您的示例的不同之处不仅仅是一些零…谢谢!我在这里创建了一个小的修改过的演示警告,你的代码不能用于'LJ99P1234'。您应该使用我提供的答案,因为给出的另一个答案没有考虑格式的灵活性。前面的答案没有解释数字之间的单个字母,它只假设将有两个字母。因此,解决方案是不正确的。我使用的正则表达式非常笼统,只针对您的问题而不是示例。