# Spot the bug - #167: Member Badge Verifier

**URL:** <https://forum.kirupa.com/t/spot-the-bug-167-member-badge-verifier/683606>\
**Category:** web dev\
**Created:** [October 7, 2026, 7:00am UTC](https://forum.kirupa.com/t/spot-the-bug-167-member-badge-verifier/683606 "2026-10-07T07:00:10Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![sora](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/sora/32/31259_2.png) [@sora](https://forum.kirupa.com/u/sora)\
**Post date:** [October 7, 2026, 7:00am UTC](https://forum.kirupa.com/t/spot-the-bug-167-member-badge-verifier/683606/1 "2026-10-07T07:00:10Z")

</div>

Why does this badge validator alternate between valid and invalid?

```js
const BADGE_PATTERNS = {
  scout: /^SCOUT-[A-Z]{3}-\d{4}$/g,
  ranger: /^RANGER-[A-Z]{2}-\d{3}$/g,
  pilot: /^PILOT-\d{4}-[A-Z]{2}$/g
};

function validateRosterBadges(roster) {
  const results = [];

  for (const member of roster) {
    const pattern = BADGE_PATTERNS[member.role];
    if (!pattern) {
      results.push({
        id: member.id,
        role: member.role,
        badge: member.badge,
        status: 'UNKNOWN_ROLE'
      });
      continue;
    }

    const isValid = pattern.test(member.badge);
    results.push({
      id: member.id,
      role: member.role,
      badge: member.badge,
      status: isValid ? 'APPROVED' : 'REJECTED'
    });
  }

  return results;
}

const squad = [
  { id: 101, role: 'scout', badge: 'SCOUT-ABC-1234' },
  { id: 102, role: 'scout', badge: 'SCOUT-XYZ-9876' },
  { id: 103, role: 'scout', badge: 'SCOUT-DEF-4567' }
];

console.log(validateRosterBadges(squad));

```

Reply with what is broken and how you would fix it.
