簡體   English   中英

是否可以使用正則表達式使用前導零替換字符串中的數字

[英]Is it possible to replace digits in a string with the same digits with leading zeros using regex

說我有一個字符串“abc123def45”

是否有可能,使用javascript正則表達式將字符串中的所有數字替換為相同的長度或全部固定長度,例如6位數。

因此,如果采用6位數方法,結果字符串將為“abc000123def000045”

如果采用相同長度的方法(我懷疑使用正則表達式會更難,如果不是不可能),結果字符串將是“abc123def045”

我當然能用正則表達式找到所有數字,例如:

\d+

但是如何在替換中獲得正確數量的前導零?

示例代碼:

var s = "abc123def45";
var r = s.replace(/\d+/g, "000123"); // this is wrong of course

您可以使用:

var s = "abc123def45";
var r = s.replace(/\d+/g, function($0) {
      return new Array(6-$0.length+1).join('0')+$0; });
//=> "abc000123def000045"

我想不出一種不使用函數作為replace回調的方法,例如:

var zeros = "0000000000";
var r = s.replace(/\d+/g, function(m) {
    return zeros.substring(0, 6 - m.length) + m;
});

完整示例: 實時復制

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Zero Padding with RegEx</title>
</head>
<body>
  <script>
    (function() {
      "use strict";

      var s = "abc123def45";
      var zeros = "0000000000";
      var r = s.replace(/\d+/g, function(m) {
        return zeros.substring(0, 6 - m.length) + m;
      });
      display("Result: " + r);

      function display(msg) {
        var p = document.createElement('p');
        p.innerHTML = String(msg);
        document.body.appendChild(p);
      }
    })();
  </script>
</body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM