diff --git a/src/detectors/regex.ts b/src/detectors/regex.ts index 9773a1e..10d0d1b 100644 --- a/src/detectors/regex.ts +++ b/src/detectors/regex.ts @@ -90,7 +90,7 @@ const RULES: RegexRule[] = [ // ── Reference Number (keyword-triggered) ─────────────── { type: "reference", - pattern: /\b(?:Referenz|Ref\.|Kunden(?:-?nummer)?|Kd\.-Nr\.|Vorgangs(?:-?nummer)?|Rechnungs(?:-?nummer)?|RG\.-Nr\.|Auftrags(?:-?nummer)?|Beleg(?:-?nummer)?|Ticket(?:-?nummer)?|Fall(?:-?nummer)?)\b\s*[:#]?\s*([A-Z0-9][\-A-Z0-9\/]{2,40})\b/gi, + pattern: /\b(?i:Referenz|Ref\.|Kunden(?:-?nummer)?|Kd\.-Nr\.|Vorgangs(?:-?nummer)?|Rechnungs(?:-?nummer)?|RG\.-Nr\.|Auftrags(?:-?nummer)?|Beleg(?:-?nummer)?|Ticket(?:-?nummer)?|Fall(?:-?nummer)?)\b\s*[:#]?\s*([A-Z0-9][\-A-Z0-9\/]{2,40})\b/g, label: "REFERENCE", priority: 8, }, diff --git a/test/regex-detector.test.ts b/test/regex-detector.test.ts index 9755a9c..2ecd884 100644 --- a/test/regex-detector.test.ts +++ b/test/regex-detector.test.ts @@ -237,4 +237,20 @@ describe("RegexDetector", () => { expect(emails[0].replacement).toBe(""); expect(emails[1].replacement).toBe(""); }); + + // ── English/Tech Word False-Positive Regression (#35) + it("does NOT detect common English/tech words as PII", () => { + const safeWords = [ + "ticket", "chat", "teams", "fallback", "reference", + "account", "key", "case", "id", "session", "message", "token", + ]; + for (const word of safeWords) { + const matches = detector.detect( + `The ${word} was processed successfully.` + ); + if (matches.length > 0) { + throw new Error(`Word "${word}" was falsely detected as PII: ${matches[0].type} (${matches[0].match})`); + } + } + }); });