Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def validate_result(self, pattern_text: str) -> bool:
letter = pattern_text[-1]

# check last is a letter, and first is in X,Y,Z
if not pattern_text[1:-1].isdigit or pattern_text[:1] not in "XYZ":
if not pattern_text[1:-1].isdigit() or pattern_text[:1] not in "XYZ":
return False
# check size is 8 or 9
if len(pattern_text) < 8 or len(pattern_text) > 9:
Expand Down
11 changes: 10 additions & 1 deletion presidio-analyzer/tests/test_es_nie_recognizer.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import pytest
from presidio_analyzer import Pattern
from presidio_analyzer.predefined_recognizers import EsNieRecognizer

from tests import assert_result
from presidio_analyzer.predefined_recognizers import EsNieRecognizer


@pytest.fixture(scope="module")
Expand Down Expand Up @@ -51,3 +52,11 @@ def test_when_all_es_nie_then_succeed(
assert len(results) == expected_len
for res, (st_pos, fn_pos) in zip(results, expected_positions):
assert_result(res, entities[0], st_pos, fn_pos, max_score)


def test_when_custom_pattern_allows_non_digit_middle_then_no_crash(entities):
"""A non-digit middle segment should be rejected, not raise."""
loose_pattern = Pattern("NIE_LOOSE", r"\b[X-Z][0-9A-Za-z]{6}[A-Z]\b", 0.5)
recognizer = EsNieRecognizer(patterns=[loose_pattern])
results = recognizer.analyze("XABCDEFG", entities)
assert results == []
Loading