Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

จัดรูปแบบ ABC-1234 ด้วย JavaScript Regular Expression

ใช้ Regex กับ String.replace() และ Function Replacer จัดรูปแบบ String ให้เป็น ABC-1234

ตัวอย่าง

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Format ABC-1234</title>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
  <p class="formatting">ABC1234</p>
  <script>
    function joinTheDashSymbol(m, r1, r2, r3, r4, r5) {
      if (r1) return [r1, r2, r3].join('-'); // 3-3-4 digits
      else return [r4, r5].join('-'); // 3 letters-4 digits
    }
    $(".formatting").text(function(i, words) {
      return words.replace(/^(\d{3})(\d{3})(\d{4})|([A-Z]{3})(\d{4})$/, joinTheDashSymbol);
    });
  </script>
</body>
</html>

คำอธิบาย Regex

/^(\d{3})(\d{3})(\d{4})|([A-Z]{3})(\d{4})$/
  • ^(\d{3})(\d{3})(\d{4}): 10 Digits → Group 1,2,3 (Phone: 123-456-7890)
  • |: OR
  • ([A-Z]{3})(\d{4}): 3 Uppercase + 4 Digits → Group 4,5 (ABC-1234)
  • $: จบ String

Replacer Function

  • m = Full Match
  • r1-r5 = Capture Groups
  • ถ้า r1 มีค่า (Match Pattern แรก) → Join Group 1-3 ด้วย -
  • Else (Match Pattern ที่ 2) → Join Group 4-5 ด้วย -

Vanilla JS Version

const format = str => str.replace(/^(\d{3})(\d{3})(\d{4})|([A-Z]{3})(\d{4})$/, 
  (m, g1,g2,g3,g4,g5) => g1 ? [g1,g2,g3].join('-') : [g4,g5].join('-')
);

ผลลัพธ์

Input: "ABC1234" → Output: "ABC-1234"