@doccloak/core 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +230 -0
- package/dist/doc.d.ts +13 -0
- package/dist/doc.js +683 -0
- package/dist/docx.d.ts +31 -0
- package/dist/docx.js +26 -0
- package/dist/dom/docx.d.ts +90 -0
- package/dist/dom/docx.js +472 -0
- package/dist/dom/index.d.ts +11 -0
- package/dist/dom/index.js +11 -0
- package/dist/dom/ocr.d.ts +112 -0
- package/dist/dom/ocr.js +224 -0
- package/dist/engine.d.ts +81 -0
- package/dist/engine.js +274 -0
- package/dist/env.d.ts +49 -0
- package/dist/env.js +53 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +29 -0
- package/dist/model-loader.d.ts +55 -0
- package/dist/model-loader.js +253 -0
- package/dist/pipeline.d.ts +19 -0
- package/dist/pipeline.js +128 -0
- package/dist/providers/bardsai.d.ts +38 -0
- package/dist/providers/bardsai.js +393 -0
- package/dist/providers/gliner.d.ts +52 -0
- package/dist/providers/gliner.js +360 -0
- package/dist/regex/index.d.ts +17 -0
- package/dist/regex/index.js +18 -0
- package/dist/regex/loader.d.ts +44 -0
- package/dist/regex/loader.js +44 -0
- package/dist/regex/rules.data.d.ts +2 -0
- package/dist/regex/rules.data.js +2671 -0
- package/dist/regex/types.d.ts +27 -0
- package/dist/regex/types.js +1 -0
- package/dist/regex/validators.d.ts +17 -0
- package/dist/regex/validators.js +492 -0
- package/dist/session.d.ts +59 -0
- package/dist/session.js +153 -0
- package/dist/types.d.ts +42 -0
- package/dist/types.js +28 -0
- package/dist/worker-protocol.d.ts +119 -0
- package/dist/worker-protocol.js +285 -0
- package/package.json +75 -0
- package/rules/at.json +70 -0
- package/rules/be.json +70 -0
- package/rules/ch.json +66 -0
- package/rules/cn.json +155 -0
- package/rules/de.json +192 -0
- package/rules/dk.json +43 -0
- package/rules/es.json +158 -0
- package/rules/fi.json +43 -0
- package/rules/fr.json +178 -0
- package/rules/gb.json +194 -0
- package/rules/ie.json +48 -0
- package/rules/it.json +116 -0
- package/rules/jp.json +136 -0
- package/rules/nl.json +99 -0
- package/rules/no.json +132 -0
- package/rules/pl.json +210 -0
- package/rules/pt.json +113 -0
- package/rules/schema.json +91 -0
- package/rules/se.json +149 -0
- package/rules/universal.json +279 -0
- package/rules/us.json +218 -0
|
@@ -0,0 +1,2671 @@
|
|
|
1
|
+
export const RULES_DATA = [
|
|
2
|
+
{
|
|
3
|
+
"region": "universal",
|
|
4
|
+
"rules": [
|
|
5
|
+
{
|
|
6
|
+
"id": "regex:universal:email",
|
|
7
|
+
"entityType": "EMAIL",
|
|
8
|
+
"pattern": "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}",
|
|
9
|
+
"flags": "g",
|
|
10
|
+
"confidence": 0.95,
|
|
11
|
+
"domains": [
|
|
12
|
+
"contact"
|
|
13
|
+
],
|
|
14
|
+
"description": "Email address",
|
|
15
|
+
"examples": [
|
|
16
|
+
"john@example.com",
|
|
17
|
+
"user.name+tag@domain.co.uk"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "regex:universal:phone_intl",
|
|
22
|
+
"entityType": "PHONE",
|
|
23
|
+
"pattern": "\\+\\d[\\d\\s()-]{7,18}\\d",
|
|
24
|
+
"flags": "g",
|
|
25
|
+
"confidence": 0.85,
|
|
26
|
+
"domains": [
|
|
27
|
+
"contact"
|
|
28
|
+
],
|
|
29
|
+
"description": "International phone number with + prefix",
|
|
30
|
+
"examples": [
|
|
31
|
+
"+1 (555) 123-4567",
|
|
32
|
+
"+48 600 123 456",
|
|
33
|
+
"+44 20 7946 0958"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "regex:universal:iban",
|
|
38
|
+
"entityType": "IBAN",
|
|
39
|
+
"pattern": "\\b[A-Z]{2}\\s?\\d{2}[\\s]?[A-Z\\d\\s]{10,30}\\b",
|
|
40
|
+
"flags": "g",
|
|
41
|
+
"confidence": 0.9,
|
|
42
|
+
"domains": [
|
|
43
|
+
"financial"
|
|
44
|
+
],
|
|
45
|
+
"description": "IBAN (2-letter country code + 2 check digits + up to 30 alphanumeric)",
|
|
46
|
+
"examples": [
|
|
47
|
+
"GB29 NWBK 6016 1331 9268 19",
|
|
48
|
+
"DE89 3704 0044 0532 0130 00",
|
|
49
|
+
"PL61 1090 1014 0000 0712 1981 2874"
|
|
50
|
+
],
|
|
51
|
+
"validate": "ibanMod97"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "regex:universal:credit_card",
|
|
55
|
+
"entityType": "CREDIT_CARD",
|
|
56
|
+
"pattern": "\\b\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{1,7}\\b",
|
|
57
|
+
"flags": "g",
|
|
58
|
+
"confidence": 0.9,
|
|
59
|
+
"domains": [
|
|
60
|
+
"financial"
|
|
61
|
+
],
|
|
62
|
+
"description": "Credit/debit card number (13-19 digits, possibly spaced/dashed)",
|
|
63
|
+
"examples": [
|
|
64
|
+
"4532 0151 1283 0366",
|
|
65
|
+
"5425-2334-3010-9903"
|
|
66
|
+
],
|
|
67
|
+
"falsePositiveNotes": "Luhn validation reduces false positives from random digit sequences",
|
|
68
|
+
"validate": "luhn"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"id": "regex:universal:currency_symbol_prefix",
|
|
72
|
+
"entityType": "CURRENCY",
|
|
73
|
+
"pattern": "[$€£¥₹₽₩₺₴]\\s?\\d{1,3}(?:[,.\\s]\\d{3})*(?:[.,]\\d{1,2})?\\b",
|
|
74
|
+
"flags": "g",
|
|
75
|
+
"confidence": 0.8,
|
|
76
|
+
"domains": [
|
|
77
|
+
"financial"
|
|
78
|
+
],
|
|
79
|
+
"description": "Currency amount with leading symbol ($, €, £, ¥, ₹, ₽, ₩, ₺, ₴)",
|
|
80
|
+
"examples": [
|
|
81
|
+
"$45,000",
|
|
82
|
+
"€1.234,56",
|
|
83
|
+
"£100.00",
|
|
84
|
+
"¥50,000"
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"id": "regex:universal:currency_code_suffix",
|
|
89
|
+
"entityType": "CURRENCY",
|
|
90
|
+
"pattern": "\\b\\d{1,3}(?:[,.\\s]\\d{3})*(?:[.,]\\d{1,2})?\\s?(?:USD|EUR|GBP|CHF|JPY|PLN|SEK|NOK|DKK|CZK|HUF|RON|BGN|HRK|RUB|UAH|TRY|BRL|ARS|MXN|COP|CLP|PEN|INR|CNY|KRW|AUD|CAD|NZD|ZAR|SGD|HKD|TWD|THB|MYR|IDR|PHP|VND|AED|SAR|QAR|KWD|BHD|OMR|ILS|EGP|NGN|KES|GHS|TZS|UGX)\\b",
|
|
91
|
+
"flags": "g",
|
|
92
|
+
"confidence": 0.8,
|
|
93
|
+
"domains": [
|
|
94
|
+
"financial"
|
|
95
|
+
],
|
|
96
|
+
"description": "Currency amount with trailing ISO code (e.g., \"1,000.00 USD\")",
|
|
97
|
+
"examples": [
|
|
98
|
+
"1,000.00 USD",
|
|
99
|
+
"45 000 PLN",
|
|
100
|
+
"100.50 EUR"
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "regex:universal:currency_symbol_suffix",
|
|
105
|
+
"entityType": "CURRENCY",
|
|
106
|
+
"pattern": "\\b\\d{1,3}(?:[,.\\s]\\d{3})*(?:[.,]\\d{1,2})?\\s?(?:zł|kr|Kč|lei|лв|Ft|kn|₽|грн|₺|R\\$|S\\/\\.|руб|₹|元|圆|円|원|ر\\.س|ر\\.ق|د\\.إ|₪|₦|₵|₱|₫|₸|₼|₾|฿|RM|Rp|đ)(?=\\s|$|[.,;:!?)}\\]])",
|
|
107
|
+
"flags": "g",
|
|
108
|
+
"confidence": 0.85,
|
|
109
|
+
"domains": [
|
|
110
|
+
"financial"
|
|
111
|
+
],
|
|
112
|
+
"description": "Currency amount with trailing local symbol (zł, kr, Kč, lei, etc.)",
|
|
113
|
+
"examples": [
|
|
114
|
+
"8 500,00 zł",
|
|
115
|
+
"1 200 kr",
|
|
116
|
+
"3.500 Kč",
|
|
117
|
+
"10 000 lei",
|
|
118
|
+
"5 000 Ft"
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "regex:universal:ipv4",
|
|
123
|
+
"entityType": "IP_ADDRESS",
|
|
124
|
+
"pattern": "\\b(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\b",
|
|
125
|
+
"flags": "g",
|
|
126
|
+
"confidence": 0.9,
|
|
127
|
+
"domains": [
|
|
128
|
+
"technical"
|
|
129
|
+
],
|
|
130
|
+
"description": "IPv4 address",
|
|
131
|
+
"examples": [
|
|
132
|
+
"192.168.1.1",
|
|
133
|
+
"10.0.0.255",
|
|
134
|
+
"172.16.0.1"
|
|
135
|
+
],
|
|
136
|
+
"validate": "ipOctets"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": "regex:universal:ipv6",
|
|
140
|
+
"entityType": "IP_ADDRESS",
|
|
141
|
+
"pattern": "\\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\\b",
|
|
142
|
+
"flags": "g",
|
|
143
|
+
"confidence": 0.9,
|
|
144
|
+
"domains": [
|
|
145
|
+
"technical"
|
|
146
|
+
],
|
|
147
|
+
"description": "IPv6 address (full form)",
|
|
148
|
+
"examples": [
|
|
149
|
+
"2001:0db8:85a3:0000:0000:8a2e:0370:7334"
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"id": "regex:universal:mac_address",
|
|
154
|
+
"entityType": "OTHER",
|
|
155
|
+
"pattern": "\\b[0-9a-fA-F]{2}(?::[0-9a-fA-F]{2}){5}\\b",
|
|
156
|
+
"flags": "g",
|
|
157
|
+
"confidence": 0.85,
|
|
158
|
+
"domains": [
|
|
159
|
+
"technical"
|
|
160
|
+
],
|
|
161
|
+
"description": "MAC address (colon-separated)",
|
|
162
|
+
"examples": [
|
|
163
|
+
"00:1B:44:11:3A:B7"
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"id": "regex:universal:date_numeric",
|
|
168
|
+
"entityType": "DATE",
|
|
169
|
+
"pattern": "\\b\\d{1,2}[./]\\d{1,2}[./]\\d{4}\\b",
|
|
170
|
+
"flags": "g",
|
|
171
|
+
"confidence": 0.75,
|
|
172
|
+
"domains": [
|
|
173
|
+
"general"
|
|
174
|
+
],
|
|
175
|
+
"description": "Numeric date (dd.mm.yyyy, dd/mm/yyyy, mm/dd/yyyy)",
|
|
176
|
+
"examples": [
|
|
177
|
+
"15.03.2025",
|
|
178
|
+
"03/15/2025",
|
|
179
|
+
"1.1.2024"
|
|
180
|
+
],
|
|
181
|
+
"falsePositiveNotes": "Cannot distinguish dd/mm/yyyy from mm/dd/yyyy — both valid"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"id": "regex:universal:date_iso",
|
|
185
|
+
"entityType": "DATE",
|
|
186
|
+
"pattern": "\\b\\d{4}-\\d{2}-\\d{2}\\b",
|
|
187
|
+
"flags": "g",
|
|
188
|
+
"confidence": 0.8,
|
|
189
|
+
"domains": [
|
|
190
|
+
"general"
|
|
191
|
+
],
|
|
192
|
+
"description": "ISO 8601 date (yyyy-mm-dd)",
|
|
193
|
+
"examples": [
|
|
194
|
+
"2025-03-15",
|
|
195
|
+
"1990-01-01"
|
|
196
|
+
]
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"id": "regex:universal:date_word",
|
|
200
|
+
"entityType": "DATE",
|
|
201
|
+
"pattern": "\\b\\d{1,2}\\s+[\\p{L}]{3,}\\s+\\d{4}\\b",
|
|
202
|
+
"flags": "gu",
|
|
203
|
+
"confidence": 0.8,
|
|
204
|
+
"domains": [
|
|
205
|
+
"general"
|
|
206
|
+
],
|
|
207
|
+
"description": "Date with month name in any language (e.g., \"10 marca 2025\", \"15 March 2025\")",
|
|
208
|
+
"examples": [
|
|
209
|
+
"10 March 2025",
|
|
210
|
+
"15 marca 2025",
|
|
211
|
+
"1 janvier 2024"
|
|
212
|
+
]
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"id": "regex:universal:date_month_first",
|
|
216
|
+
"entityType": "DATE",
|
|
217
|
+
"pattern": "\\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\\s+\\d{1,2},?\\s+\\d{4}\\b",
|
|
218
|
+
"flags": "gi",
|
|
219
|
+
"confidence": 0.85,
|
|
220
|
+
"domains": [
|
|
221
|
+
"general"
|
|
222
|
+
],
|
|
223
|
+
"description": "English date with month name first (e.g., \"March 15, 2025\")",
|
|
224
|
+
"examples": [
|
|
225
|
+
"March 15, 2025",
|
|
226
|
+
"Jan 1 2024",
|
|
227
|
+
"December 25, 2023"
|
|
228
|
+
]
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"id": "regex:universal:labeled_id",
|
|
232
|
+
"entityType": "SSN",
|
|
233
|
+
"pattern": "(?<=[\\p{L}][\\p{L}\\s]{0,30}[:#]\\s?)[A-Z0-9]{2,4}[\\s-]?[\\d]{4,}(?:[\\s-][\\d]+)*",
|
|
234
|
+
"flags": "giu",
|
|
235
|
+
"confidence": 0.7,
|
|
236
|
+
"domains": [
|
|
237
|
+
"identity",
|
|
238
|
+
"general"
|
|
239
|
+
],
|
|
240
|
+
"description": "Labeled identifier (Key: Value pattern, e.g., \"ID: ABC12345\", \"Ref: 987654\")",
|
|
241
|
+
"examples": [
|
|
242
|
+
"ID: ABC12345"
|
|
243
|
+
],
|
|
244
|
+
"falsePositiveNotes": "Broad pattern — catches many key:value pairs that may not be PII"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"id": "regex:universal:long_number",
|
|
248
|
+
"entityType": "SSN",
|
|
249
|
+
"pattern": "(?<![.\\d])\\b\\d[\\d\\s-]{7,}\\d\\b(?![.\\d])",
|
|
250
|
+
"flags": "g",
|
|
251
|
+
"confidence": 0.5,
|
|
252
|
+
"domains": [
|
|
253
|
+
"identity",
|
|
254
|
+
"financial"
|
|
255
|
+
],
|
|
256
|
+
"description": "Standalone long digit sequence (8+ digits) — likely IDs, account numbers, case numbers",
|
|
257
|
+
"examples": [
|
|
258
|
+
"123456789",
|
|
259
|
+
"123-456-789-00"
|
|
260
|
+
],
|
|
261
|
+
"falsePositiveNotes": "Low confidence — many non-PII numbers match. Overlap resolution with specific patterns prevents double-detection."
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"id": "regex:universal:postal_city",
|
|
265
|
+
"entityType": "ADDRESS",
|
|
266
|
+
"pattern": "\\b\\d{2,5}[-\\s]?\\d{2,4}\\s+[\\p{L}][\\p{L}]+\\b",
|
|
267
|
+
"flags": "gu",
|
|
268
|
+
"confidence": 0.65,
|
|
269
|
+
"domains": [
|
|
270
|
+
"contact"
|
|
271
|
+
],
|
|
272
|
+
"description": "Postal/zip code followed by city name (various country formats)",
|
|
273
|
+
"examples": [
|
|
274
|
+
"00-950 Warszawa",
|
|
275
|
+
"75008 Paris"
|
|
276
|
+
],
|
|
277
|
+
"falsePositiveNotes": "May match non-address number+word sequences"
|
|
278
|
+
}
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"region": "gb",
|
|
283
|
+
"rules": [
|
|
284
|
+
{
|
|
285
|
+
"id": "regex:gb:nino",
|
|
286
|
+
"entityType": "SSN",
|
|
287
|
+
"pattern": "\\b[A-Z]{2}\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}\\s?[A-D]\\b",
|
|
288
|
+
"flags": "gi",
|
|
289
|
+
"confidence": 0.9,
|
|
290
|
+
"domains": [
|
|
291
|
+
"identity",
|
|
292
|
+
"hr",
|
|
293
|
+
"financial"
|
|
294
|
+
],
|
|
295
|
+
"description": "UK National Insurance Number (NINO, e.g., AB 12 34 56 C)",
|
|
296
|
+
"examples": [
|
|
297
|
+
"AB 12 34 56 C",
|
|
298
|
+
"CE123456C"
|
|
299
|
+
],
|
|
300
|
+
"validate": "nino"
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"id": "regex:gb:nhs",
|
|
304
|
+
"entityType": "SSN",
|
|
305
|
+
"pattern": "\\b\\d{3}\\s?\\d{3}\\s?\\d{4}\\b",
|
|
306
|
+
"flags": "g",
|
|
307
|
+
"confidence": 0.6,
|
|
308
|
+
"domains": [
|
|
309
|
+
"medical",
|
|
310
|
+
"identity"
|
|
311
|
+
],
|
|
312
|
+
"description": "UK NHS number (10 digits)",
|
|
313
|
+
"examples": [
|
|
314
|
+
"943 476 5919"
|
|
315
|
+
],
|
|
316
|
+
"falsePositiveNotes": "10-digit format overlaps with many phone numbers",
|
|
317
|
+
"validate": "nhs"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"id": "regex:gb:passport",
|
|
321
|
+
"entityType": "SSN",
|
|
322
|
+
"pattern": "\\b\\d{9}\\b",
|
|
323
|
+
"flags": "g",
|
|
324
|
+
"confidence": 0.4,
|
|
325
|
+
"domains": [
|
|
326
|
+
"identity"
|
|
327
|
+
],
|
|
328
|
+
"description": "UK passport number (9 digits)",
|
|
329
|
+
"examples": [
|
|
330
|
+
"123456789"
|
|
331
|
+
],
|
|
332
|
+
"falsePositiveNotes": "Very broad — 9 digits matches many things. Best paired with context clues."
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"id": "regex:gb:sort_code",
|
|
336
|
+
"entityType": "OTHER",
|
|
337
|
+
"pattern": "\\b\\d{2}-\\d{2}-\\d{2}\\b",
|
|
338
|
+
"flags": "g",
|
|
339
|
+
"confidence": 0.65,
|
|
340
|
+
"domains": [
|
|
341
|
+
"financial"
|
|
342
|
+
],
|
|
343
|
+
"description": "UK bank sort code (XX-XX-XX)",
|
|
344
|
+
"examples": [
|
|
345
|
+
"12-34-56"
|
|
346
|
+
],
|
|
347
|
+
"falsePositiveNotes": "Also matches dates in dd-mm-yy format"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"id": "regex:gb:bank_account",
|
|
351
|
+
"entityType": "OTHER",
|
|
352
|
+
"pattern": "\\b\\d{7,8}\\b",
|
|
353
|
+
"flags": "g",
|
|
354
|
+
"confidence": 0.3,
|
|
355
|
+
"domains": [
|
|
356
|
+
"financial"
|
|
357
|
+
],
|
|
358
|
+
"description": "UK bank account number (7-8 digits)",
|
|
359
|
+
"examples": [
|
|
360
|
+
"12345678"
|
|
361
|
+
],
|
|
362
|
+
"falsePositiveNotes": "Extremely broad — disabled by default in low-sensitivity mode"
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"id": "regex:gb:vat",
|
|
366
|
+
"entityType": "SSN",
|
|
367
|
+
"pattern": "\\b(?:GB)?\\d{3}\\s?\\d{4}\\s?\\d{2}(?:\\s?\\d{3})?\\b",
|
|
368
|
+
"flags": "gi",
|
|
369
|
+
"confidence": 0.75,
|
|
370
|
+
"domains": [
|
|
371
|
+
"financial",
|
|
372
|
+
"legal"
|
|
373
|
+
],
|
|
374
|
+
"description": "UK VAT number (GB + 9 or 12 digits)",
|
|
375
|
+
"examples": [
|
|
376
|
+
"GB123 4567 89",
|
|
377
|
+
"GB123456789"
|
|
378
|
+
]
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"id": "regex:gb:phone_landline",
|
|
382
|
+
"entityType": "PHONE",
|
|
383
|
+
"pattern": "\\b0\\d{4}\\s?\\d{6}\\b",
|
|
384
|
+
"flags": "g",
|
|
385
|
+
"confidence": 0.8,
|
|
386
|
+
"domains": [
|
|
387
|
+
"contact"
|
|
388
|
+
],
|
|
389
|
+
"description": "UK landline phone number (e.g., 020 7946 0958)",
|
|
390
|
+
"examples": [
|
|
391
|
+
"01234 567890",
|
|
392
|
+
"02079 460958"
|
|
393
|
+
]
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"id": "regex:gb:phone_mobile",
|
|
397
|
+
"entityType": "PHONE",
|
|
398
|
+
"pattern": "\\b07\\d{3}\\s?\\d{6}\\b",
|
|
399
|
+
"flags": "g",
|
|
400
|
+
"confidence": 0.85,
|
|
401
|
+
"domains": [
|
|
402
|
+
"contact"
|
|
403
|
+
],
|
|
404
|
+
"description": "UK mobile phone number (07XXX XXXXXX)",
|
|
405
|
+
"examples": [
|
|
406
|
+
"07911 123456"
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"id": "regex:gb:postcode",
|
|
411
|
+
"entityType": "ADDRESS",
|
|
412
|
+
"pattern": "\\b[A-Z]{1,2}\\d[A-Z\\d]?\\s?\\d[A-Z]{2}\\b",
|
|
413
|
+
"flags": "gi",
|
|
414
|
+
"confidence": 0.8,
|
|
415
|
+
"domains": [
|
|
416
|
+
"contact"
|
|
417
|
+
],
|
|
418
|
+
"description": "UK postcode (e.g., SW1A 1AA, EC2A 1NT, M1 1AA)",
|
|
419
|
+
"examples": [
|
|
420
|
+
"SW1A 1AA",
|
|
421
|
+
"EC2A 1NT",
|
|
422
|
+
"M1 1AA",
|
|
423
|
+
"B33 8TH"
|
|
424
|
+
]
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"id": "regex:gb:currency_words",
|
|
428
|
+
"entityType": "CURRENCY",
|
|
429
|
+
"pattern": "(?:in\\s+(?:the\\s+)?(?:amount|sum)\\s+of|pay(?:able)?(?:\\s+the\\s+(?:amount|sum))?\\s+of)\\s+[\\p{L}\\s-]+(?:pounds?|pence|sterling)\\b",
|
|
430
|
+
"flags": "giu",
|
|
431
|
+
"confidence": 0.9,
|
|
432
|
+
"domains": [
|
|
433
|
+
"financial"
|
|
434
|
+
],
|
|
435
|
+
"description": "English (UK) amount written in words (e.g., \"in the amount of eight thousand five hundred pounds\")",
|
|
436
|
+
"examples": [
|
|
437
|
+
"in the amount of eight thousand five hundred pounds"
|
|
438
|
+
]
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"id": "regex:gb:street",
|
|
442
|
+
"entityType": "ADDRESS",
|
|
443
|
+
"pattern": "\\b\\d{1,4}[A-Z]?\\s+[A-Z][\\w]+(?:\\s+[A-Z][\\w]+)*\\s+(?:Street|St|Road|Rd|Avenue|Ave|Lane|Ln|Drive|Dr|Close|Cl|Crescent|Cres|Terrace|Terr|Place|Pl|Gardens|Gdns|Grove|Way|Court|Ct|Square|Sq|Mews|Row|Rise|Hill|Park|Gate|Walk|Green|Parade|Wharf)\\.?\\b",
|
|
444
|
+
"flags": "gi",
|
|
445
|
+
"confidence": 0.85,
|
|
446
|
+
"domains": [
|
|
447
|
+
"contact"
|
|
448
|
+
],
|
|
449
|
+
"description": "UK street address (number + street name + type)",
|
|
450
|
+
"examples": [
|
|
451
|
+
"10 Downing Street",
|
|
452
|
+
"221B Baker Street",
|
|
453
|
+
"42 Oxford Road"
|
|
454
|
+
]
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
"id": "regex:gb:company",
|
|
458
|
+
"entityType": "COMPANY",
|
|
459
|
+
"pattern": "[\\p{L}][\\p{L}\\s&.']+(?:,?\\s+)?(?:Ltd\\.?|PLC|LLP|L\\.L\\.P\\.)\\b",
|
|
460
|
+
"flags": "gu",
|
|
461
|
+
"confidence": 0.85,
|
|
462
|
+
"domains": [
|
|
463
|
+
"legal",
|
|
464
|
+
"financial"
|
|
465
|
+
],
|
|
466
|
+
"description": "UK company name with legal suffix (Ltd, PLC, LLP)",
|
|
467
|
+
"examples": [
|
|
468
|
+
"Barclays PLC",
|
|
469
|
+
"Tesco Ltd",
|
|
470
|
+
"Deloitte LLP"
|
|
471
|
+
]
|
|
472
|
+
}
|
|
473
|
+
]
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"region": "pl",
|
|
477
|
+
"rules": [
|
|
478
|
+
{
|
|
479
|
+
"id": "regex:pl:pesel",
|
|
480
|
+
"entityType": "SSN",
|
|
481
|
+
"pattern": "\\b\\d{2}[0-3]\\d[0-3]\\d{6}\\b",
|
|
482
|
+
"flags": "g",
|
|
483
|
+
"confidence": 0.9,
|
|
484
|
+
"domains": [
|
|
485
|
+
"identity",
|
|
486
|
+
"hr",
|
|
487
|
+
"medical"
|
|
488
|
+
],
|
|
489
|
+
"description": "Polish PESEL national identification number (11 digits, YYMMDD + 5)",
|
|
490
|
+
"examples": [
|
|
491
|
+
"89052310002",
|
|
492
|
+
"02271400004"
|
|
493
|
+
],
|
|
494
|
+
"validate": "pesel"
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
"id": "regex:pl:id_card",
|
|
498
|
+
"entityType": "SSN",
|
|
499
|
+
"pattern": "\\b[A-Z]{3}\\s?\\d{6}\\b",
|
|
500
|
+
"flags": "g",
|
|
501
|
+
"confidence": 0.8,
|
|
502
|
+
"domains": [
|
|
503
|
+
"identity"
|
|
504
|
+
],
|
|
505
|
+
"description": "Polish ID card number (3 letters + 6 digits)",
|
|
506
|
+
"examples": [
|
|
507
|
+
"ABC 523456"
|
|
508
|
+
],
|
|
509
|
+
"validate": "plIdCard"
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
"id": "regex:pl:passport",
|
|
513
|
+
"entityType": "SSN",
|
|
514
|
+
"pattern": "\\b[A-Z]{2}\\s?\\d{7}\\b",
|
|
515
|
+
"flags": "g",
|
|
516
|
+
"confidence": 0.7,
|
|
517
|
+
"domains": [
|
|
518
|
+
"identity"
|
|
519
|
+
],
|
|
520
|
+
"description": "Polish passport number (2 letters + 7 digits)",
|
|
521
|
+
"examples": [
|
|
522
|
+
"AB 1234567",
|
|
523
|
+
"CD1234567"
|
|
524
|
+
]
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
"id": "regex:pl:nip",
|
|
528
|
+
"entityType": "SSN",
|
|
529
|
+
"pattern": "\\b\\d{3}-?\\d{3}-?\\d{2}-?\\d{2}\\b",
|
|
530
|
+
"flags": "g",
|
|
531
|
+
"confidence": 0.85,
|
|
532
|
+
"domains": [
|
|
533
|
+
"financial",
|
|
534
|
+
"legal"
|
|
535
|
+
],
|
|
536
|
+
"description": "Polish NIP tax identification number (10 digits, XXX-XXX-XX-XX)",
|
|
537
|
+
"examples": [
|
|
538
|
+
"123-456-78-19",
|
|
539
|
+
"1234567819"
|
|
540
|
+
],
|
|
541
|
+
"validate": "nip"
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"id": "regex:pl:regon",
|
|
545
|
+
"entityType": "SSN",
|
|
546
|
+
"pattern": "\\b\\d{9}(?:\\d{5})?\\b",
|
|
547
|
+
"flags": "g",
|
|
548
|
+
"confidence": 0.6,
|
|
549
|
+
"domains": [
|
|
550
|
+
"financial",
|
|
551
|
+
"legal"
|
|
552
|
+
],
|
|
553
|
+
"description": "Polish REGON business registry number (9 or 14 digits)",
|
|
554
|
+
"examples": [
|
|
555
|
+
"123456785"
|
|
556
|
+
],
|
|
557
|
+
"falsePositiveNotes": "9-digit REGON overlaps with many other number formats",
|
|
558
|
+
"validate": "regon"
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
"id": "regex:pl:bank_account",
|
|
562
|
+
"entityType": "OTHER",
|
|
563
|
+
"pattern": "\\b\\d{4}\\s?\\d{4}\\s?\\d{4}\\s?\\d{4}\\s?\\d{4}\\s?\\d{4}\\s?\\d{2}\\b",
|
|
564
|
+
"flags": "g",
|
|
565
|
+
"confidence": 0.85,
|
|
566
|
+
"domains": [
|
|
567
|
+
"financial"
|
|
568
|
+
],
|
|
569
|
+
"description": "Polish bank account number (26 digits, often spaced in groups of 4)",
|
|
570
|
+
"examples": [
|
|
571
|
+
"1234 5678 9012 3456 7890 1234 56"
|
|
572
|
+
]
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
"id": "regex:pl:phone",
|
|
576
|
+
"entityType": "PHONE",
|
|
577
|
+
"pattern": "\\b(?:\\+?48[\\s-]?)?\\d{3}[\\s-]?\\d{3}[\\s-]?\\d{3}\\b",
|
|
578
|
+
"flags": "g",
|
|
579
|
+
"confidence": 0.8,
|
|
580
|
+
"domains": [
|
|
581
|
+
"contact"
|
|
582
|
+
],
|
|
583
|
+
"description": "Polish phone number (9 digits, optionally with +48 prefix)",
|
|
584
|
+
"examples": [
|
|
585
|
+
"+48 600 123 456",
|
|
586
|
+
"600-123-456",
|
|
587
|
+
"48 600123456"
|
|
588
|
+
]
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
"id": "regex:pl:postal",
|
|
592
|
+
"entityType": "ADDRESS",
|
|
593
|
+
"pattern": "\\b\\d{2}-\\d{3}\\s+[\\p{L}][\\p{L}\\s-]+\\b",
|
|
594
|
+
"flags": "gu",
|
|
595
|
+
"confidence": 0.8,
|
|
596
|
+
"domains": [
|
|
597
|
+
"contact"
|
|
598
|
+
],
|
|
599
|
+
"description": "Polish postal code (XX-XXX) followed by city name",
|
|
600
|
+
"examples": [
|
|
601
|
+
"00-950 Warszawa",
|
|
602
|
+
"31-501 Kraków",
|
|
603
|
+
"80-244 Gdańsk Wrzeszcz"
|
|
604
|
+
]
|
|
605
|
+
},
|
|
606
|
+
{
|
|
607
|
+
"id": "regex:pl:currency_words",
|
|
608
|
+
"entityType": "CURRENCY",
|
|
609
|
+
"pattern": "(?:słownie:\\s*)[\\p{L}\\s]+(?:złot(?:ych|y|e)|groszy|grosz(?:e)?)\\b",
|
|
610
|
+
"flags": "giu",
|
|
611
|
+
"confidence": 0.9,
|
|
612
|
+
"domains": [
|
|
613
|
+
"financial"
|
|
614
|
+
],
|
|
615
|
+
"description": "Polish amount written in words after \"słownie:\" (e.g., \"słownie: osiem tysięcy pięćset złotych\")",
|
|
616
|
+
"examples": [
|
|
617
|
+
"słownie: osiem tysięcy pięćset złotych"
|
|
618
|
+
]
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
"id": "regex:pl:street",
|
|
622
|
+
"entityType": "ADDRESS",
|
|
623
|
+
"pattern": "(?:ul\\.|al\\.|pl\\.|os\\.)\\s+[\\p{L}][\\p{L}\\s]+\\s+\\d+[\\p{L}]?(?:\\s*[/\\\\]\\s*\\d+[\\p{L}]?)?",
|
|
624
|
+
"flags": "gu",
|
|
625
|
+
"confidence": 0.9,
|
|
626
|
+
"domains": [
|
|
627
|
+
"contact"
|
|
628
|
+
],
|
|
629
|
+
"description": "Polish street address (ul./al./pl./os. + name + number)",
|
|
630
|
+
"examples": [
|
|
631
|
+
"ul. Floriańska 27/3",
|
|
632
|
+
"ul. Juliusza Słowackiego 15/8",
|
|
633
|
+
"al. Krakowska 42",
|
|
634
|
+
"os. Złotego Wieku 12"
|
|
635
|
+
]
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"id": "regex:pl:company",
|
|
639
|
+
"entityType": "COMPANY",
|
|
640
|
+
"pattern": "[\\p{L}][\\p{L}\\s]+(?:Sp(?:ółka)?\\s*z\\s*o\\.?\\s*o\\.?|Spółka\\s+z\\s+ograniczon[\\p{L}]+\\s+odpowiedzialno[\\p{L}]+|Sp\\.\\s*j\\.|S\\.A\\.|Sp\\.\\s*k\\.)",
|
|
641
|
+
"flags": "gu",
|
|
642
|
+
"confidence": 0.9,
|
|
643
|
+
"domains": [
|
|
644
|
+
"legal",
|
|
645
|
+
"financial"
|
|
646
|
+
],
|
|
647
|
+
"description": "Polish company name with legal form (Sp. z o.o., S.A., Sp. j., Sp. k.)",
|
|
648
|
+
"examples": [
|
|
649
|
+
"Santander Bank Polska S.A.",
|
|
650
|
+
"NOVAMED Spółka z ograniczoną odpowiedzialnością"
|
|
651
|
+
]
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
"id": "regex:pl:court_case",
|
|
655
|
+
"entityType": "OTHER",
|
|
656
|
+
"pattern": "\\b[IVXLCDM]+\\s+(?:K|C|Ca|Cz|Co|Gz|Ga|GCo|GC)\\s+\\d+\\/\\d{2,4}\\b",
|
|
657
|
+
"flags": "g",
|
|
658
|
+
"confidence": 0.9,
|
|
659
|
+
"domains": [
|
|
660
|
+
"legal"
|
|
661
|
+
],
|
|
662
|
+
"description": "Polish court case signature (e.g., \"III K 123/24\", \"I C 456/2023\")",
|
|
663
|
+
"examples": [
|
|
664
|
+
"III K 123/24",
|
|
665
|
+
"I C 456/2023"
|
|
666
|
+
]
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
"id": "regex:pl:krs",
|
|
670
|
+
"entityType": "OTHER",
|
|
671
|
+
"pattern": "\\b\\d{4}\\/\\d{8}\\/\\d{4}\\b",
|
|
672
|
+
"flags": "g",
|
|
673
|
+
"confidence": 0.9,
|
|
674
|
+
"domains": [
|
|
675
|
+
"legal",
|
|
676
|
+
"financial"
|
|
677
|
+
],
|
|
678
|
+
"description": "Polish KRS company registry number",
|
|
679
|
+
"examples": [
|
|
680
|
+
"0000/12345678/0001"
|
|
681
|
+
]
|
|
682
|
+
}
|
|
683
|
+
]
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
"region": "de",
|
|
687
|
+
"rules": [
|
|
688
|
+
{
|
|
689
|
+
"id": "regex:de:personalausweis",
|
|
690
|
+
"entityType": "SSN",
|
|
691
|
+
"pattern": "\\b[CFGHJKLMNPRTVWXYZ]\\d{2}[CFGHJKLMNPRTVWXYZ0-9]{6}\\d\\b",
|
|
692
|
+
"flags": "g",
|
|
693
|
+
"confidence": 0.75,
|
|
694
|
+
"domains": [
|
|
695
|
+
"identity"
|
|
696
|
+
],
|
|
697
|
+
"description": "German ID card number (Personalausweisnummer)",
|
|
698
|
+
"examples": [
|
|
699
|
+
"T220001297"
|
|
700
|
+
]
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
"id": "regex:de:passport",
|
|
704
|
+
"entityType": "SSN",
|
|
705
|
+
"pattern": "\\b[CFGHJKLMNPRTVWXYZ]\\d{2}[CFGHJKLMNPRTVWXYZ0-9]{5}\\d[A-Z]\\d{7}\\b",
|
|
706
|
+
"flags": "g",
|
|
707
|
+
"confidence": 0.75,
|
|
708
|
+
"domains": [
|
|
709
|
+
"identity"
|
|
710
|
+
],
|
|
711
|
+
"description": "German passport number",
|
|
712
|
+
"examples": [
|
|
713
|
+
"C01X00T47D1234567"
|
|
714
|
+
]
|
|
715
|
+
},
|
|
716
|
+
{
|
|
717
|
+
"id": "regex:de:steuernummer",
|
|
718
|
+
"entityType": "SSN",
|
|
719
|
+
"pattern": "\\b\\d{2,3}\\/?\\d{3}\\/?\\d{4,5}\\b",
|
|
720
|
+
"flags": "g",
|
|
721
|
+
"confidence": 0.6,
|
|
722
|
+
"domains": [
|
|
723
|
+
"financial"
|
|
724
|
+
],
|
|
725
|
+
"description": "German tax number (Steuernummer, 10-11 digits, format varies by state)",
|
|
726
|
+
"examples": [
|
|
727
|
+
"93/815/08152",
|
|
728
|
+
"2181508152"
|
|
729
|
+
],
|
|
730
|
+
"falsePositiveNotes": "Format varies by Bundesland — hard to validate precisely"
|
|
731
|
+
},
|
|
732
|
+
{
|
|
733
|
+
"id": "regex:de:steuerid",
|
|
734
|
+
"entityType": "SSN",
|
|
735
|
+
"pattern": "\\b\\d{2}\\s?\\d{3}\\s?\\d{3}\\s?\\d{3}\\b",
|
|
736
|
+
"flags": "g",
|
|
737
|
+
"confidence": 0.8,
|
|
738
|
+
"domains": [
|
|
739
|
+
"financial",
|
|
740
|
+
"identity"
|
|
741
|
+
],
|
|
742
|
+
"description": "German tax ID (Steuerliche Identifikationsnummer, 11 digits)",
|
|
743
|
+
"examples": [
|
|
744
|
+
"12 345 678 903"
|
|
745
|
+
],
|
|
746
|
+
"validate": "steuerId"
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
"id": "regex:de:vat",
|
|
750
|
+
"entityType": "SSN",
|
|
751
|
+
"pattern": "\\b(?:DE)?\\d{9}\\b",
|
|
752
|
+
"flags": "gi",
|
|
753
|
+
"confidence": 0.65,
|
|
754
|
+
"domains": [
|
|
755
|
+
"financial",
|
|
756
|
+
"legal"
|
|
757
|
+
],
|
|
758
|
+
"description": "German VAT number (USt-IdNr., DE + 9 digits)",
|
|
759
|
+
"examples": [
|
|
760
|
+
"DE123456789"
|
|
761
|
+
],
|
|
762
|
+
"falsePositiveNotes": "Without DE prefix, 9 digits alone has many false positives"
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
"id": "regex:de:phone",
|
|
766
|
+
"entityType": "PHONE",
|
|
767
|
+
"pattern": "\\b(?:\\+?49[\\s-]?)?\\(?\\d{2,5}\\)?[\\s-]?\\d{3,10}\\b",
|
|
768
|
+
"flags": "g",
|
|
769
|
+
"confidence": 0.7,
|
|
770
|
+
"domains": [
|
|
771
|
+
"contact"
|
|
772
|
+
],
|
|
773
|
+
"description": "German phone number (variable-length area codes)",
|
|
774
|
+
"examples": [
|
|
775
|
+
"+49 30 12345678",
|
|
776
|
+
"089/12345678",
|
|
777
|
+
"(030) 12345678"
|
|
778
|
+
],
|
|
779
|
+
"falsePositiveNotes": "Variable-length area codes make this pattern broad"
|
|
780
|
+
},
|
|
781
|
+
{
|
|
782
|
+
"id": "regex:de:postal",
|
|
783
|
+
"entityType": "ADDRESS",
|
|
784
|
+
"pattern": "\\b\\d{5}\\s+[\\p{L}][\\p{L}\\s-]+\\b",
|
|
785
|
+
"flags": "gu",
|
|
786
|
+
"confidence": 0.8,
|
|
787
|
+
"domains": [
|
|
788
|
+
"contact"
|
|
789
|
+
],
|
|
790
|
+
"description": "German postal code (5 digits) followed by city name",
|
|
791
|
+
"examples": [
|
|
792
|
+
"10115 Berlin",
|
|
793
|
+
"80331 München"
|
|
794
|
+
]
|
|
795
|
+
},
|
|
796
|
+
{
|
|
797
|
+
"id": "regex:de:currency_words",
|
|
798
|
+
"entityType": "CURRENCY",
|
|
799
|
+
"pattern": "(?:in\\s+(?:Höhe|Worten?)\\s+(?:von\\s+)?|(?:Betrag|Summe)\\s+von\\s+)[\\p{L}\\s-]+(?:Euro|Cent)\\b",
|
|
800
|
+
"flags": "giu",
|
|
801
|
+
"confidence": 0.9,
|
|
802
|
+
"domains": [
|
|
803
|
+
"financial"
|
|
804
|
+
],
|
|
805
|
+
"description": "German amount written in words (e.g., \"in Höhe von achttausendfünfhundert Euro\")",
|
|
806
|
+
"examples": [
|
|
807
|
+
"in Höhe von achttausendfünfhundert Euro"
|
|
808
|
+
]
|
|
809
|
+
},
|
|
810
|
+
{
|
|
811
|
+
"id": "regex:de:street",
|
|
812
|
+
"entityType": "ADDRESS",
|
|
813
|
+
"pattern": "[\\p{L}][\\p{L}\\s-]*(?:straße|strasse|str\\.|weg|gasse|platz|allee|ring|damm|ufer|chaussee)\\s+\\d+[\\p{L}]?(?:\\s*[/\\\\]\\s*\\d+)?",
|
|
814
|
+
"flags": "giu",
|
|
815
|
+
"confidence": 0.9,
|
|
816
|
+
"domains": [
|
|
817
|
+
"contact"
|
|
818
|
+
],
|
|
819
|
+
"description": "German street address (name + straße/str./weg/gasse/platz + number)",
|
|
820
|
+
"examples": [
|
|
821
|
+
"Friedrichstraße 43",
|
|
822
|
+
"Berliner Str. 12",
|
|
823
|
+
"Hauptplatz 1",
|
|
824
|
+
"Am Damm 7a"
|
|
825
|
+
]
|
|
826
|
+
},
|
|
827
|
+
{
|
|
828
|
+
"id": "regex:de:company",
|
|
829
|
+
"entityType": "COMPANY",
|
|
830
|
+
"pattern": "[\\p{L}][\\p{L}\\s&.]+(?:\\s+)?(?:GmbH|AG|KG|OHG|e\\.?\\s?V\\.?|GbR|UG|mbH|KGaA)\\b",
|
|
831
|
+
"flags": "gu",
|
|
832
|
+
"confidence": 0.9,
|
|
833
|
+
"domains": [
|
|
834
|
+
"legal",
|
|
835
|
+
"financial"
|
|
836
|
+
],
|
|
837
|
+
"description": "German company name with legal form (GmbH, AG, KG, OHG, e.V., GbR, UG)",
|
|
838
|
+
"examples": [
|
|
839
|
+
"Deutsche Bank AG",
|
|
840
|
+
"Siemens GmbH",
|
|
841
|
+
"Bosch KG"
|
|
842
|
+
]
|
|
843
|
+
},
|
|
844
|
+
{
|
|
845
|
+
"id": "regex:de:icd10gm",
|
|
846
|
+
"entityType": "OTHER",
|
|
847
|
+
"pattern": "\\b[A-Z]\\d{2}(?:\\.\\d{1,2})?(?:\\s?[GLRAZ])?\\b",
|
|
848
|
+
"flags": "g",
|
|
849
|
+
"confidence": 0.55,
|
|
850
|
+
"domains": [
|
|
851
|
+
"medical"
|
|
852
|
+
],
|
|
853
|
+
"description": "ICD-10-GM diagnosis code (German modification)",
|
|
854
|
+
"examples": [
|
|
855
|
+
"J18.9 G",
|
|
856
|
+
"E11.65"
|
|
857
|
+
],
|
|
858
|
+
"falsePositiveNotes": "Very short codes — high false positive risk"
|
|
859
|
+
},
|
|
860
|
+
{
|
|
861
|
+
"id": "regex:de:sozialversicherung",
|
|
862
|
+
"entityType": "SSN",
|
|
863
|
+
"pattern": "\\b\\d{2}(?:0[1-9]|[12]\\d|3[01])(?:0[1-9]|1[0-2])\\d{2}[A-Z]\\d{2}\\d\\b",
|
|
864
|
+
"flags": "gi",
|
|
865
|
+
"confidence": 0.75,
|
|
866
|
+
"domains": [
|
|
867
|
+
"hr",
|
|
868
|
+
"identity"
|
|
869
|
+
],
|
|
870
|
+
"description": "German social insurance number (Sozialversicherungsnummer, 12 chars: area + DDMMYY birth date + letter + serial + check digit)",
|
|
871
|
+
"examples": [
|
|
872
|
+
"12010182A056"
|
|
873
|
+
]
|
|
874
|
+
}
|
|
875
|
+
]
|
|
876
|
+
},
|
|
877
|
+
{
|
|
878
|
+
"region": "fr",
|
|
879
|
+
"rules": [
|
|
880
|
+
{
|
|
881
|
+
"id": "regex:fr:nir",
|
|
882
|
+
"entityType": "SSN",
|
|
883
|
+
"pattern": "\\b[12]\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}\\s?\\d{3}\\s?\\d{3}(?:\\s?\\d{2})?\\b",
|
|
884
|
+
"flags": "g",
|
|
885
|
+
"confidence": 0.9,
|
|
886
|
+
"domains": [
|
|
887
|
+
"identity",
|
|
888
|
+
"medical",
|
|
889
|
+
"hr"
|
|
890
|
+
],
|
|
891
|
+
"description": "French NIR / INSEE number (numéro de sécurité sociale, 13+2 digits)",
|
|
892
|
+
"examples": [
|
|
893
|
+
"1 85 05 78 049 013 36"
|
|
894
|
+
],
|
|
895
|
+
"validate": "nir"
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
"id": "regex:fr:passport",
|
|
899
|
+
"entityType": "SSN",
|
|
900
|
+
"pattern": "\\b\\d{2}[A-Z]{2}\\d{5}\\b",
|
|
901
|
+
"flags": "g",
|
|
902
|
+
"confidence": 0.75,
|
|
903
|
+
"domains": [
|
|
904
|
+
"identity"
|
|
905
|
+
],
|
|
906
|
+
"description": "French passport number (2 digits + 2 letters + 5 digits)",
|
|
907
|
+
"examples": [
|
|
908
|
+
"12AB34567"
|
|
909
|
+
]
|
|
910
|
+
},
|
|
911
|
+
{
|
|
912
|
+
"id": "regex:fr:cni",
|
|
913
|
+
"entityType": "SSN",
|
|
914
|
+
"pattern": "\\b\\d{12}\\b",
|
|
915
|
+
"flags": "g",
|
|
916
|
+
"confidence": 0.4,
|
|
917
|
+
"domains": [
|
|
918
|
+
"identity"
|
|
919
|
+
],
|
|
920
|
+
"description": "French national ID card number (12 digits, new format)",
|
|
921
|
+
"examples": [
|
|
922
|
+
"123456789012"
|
|
923
|
+
],
|
|
924
|
+
"falsePositiveNotes": "Very broad — 12 digits matches many things"
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
"id": "regex:fr:siret",
|
|
928
|
+
"entityType": "SSN",
|
|
929
|
+
"pattern": "\\b\\d{3}\\s?\\d{3}\\s?\\d{3}(?:\\s?\\d{5})?\\b",
|
|
930
|
+
"flags": "g",
|
|
931
|
+
"confidence": 0.65,
|
|
932
|
+
"domains": [
|
|
933
|
+
"financial",
|
|
934
|
+
"legal"
|
|
935
|
+
],
|
|
936
|
+
"description": "French SIRET (14 digits) or SIREN (9 digits) business number",
|
|
937
|
+
"examples": [
|
|
938
|
+
"362 521 879 00034",
|
|
939
|
+
"362 521 879"
|
|
940
|
+
],
|
|
941
|
+
"falsePositiveNotes": "9-digit SIREN overlaps with many formats"
|
|
942
|
+
},
|
|
943
|
+
{
|
|
944
|
+
"id": "regex:fr:vat",
|
|
945
|
+
"entityType": "SSN",
|
|
946
|
+
"pattern": "\\b(?:FR)?\\d{2}\\s?\\d{9}\\b",
|
|
947
|
+
"flags": "gi",
|
|
948
|
+
"confidence": 0.75,
|
|
949
|
+
"domains": [
|
|
950
|
+
"financial",
|
|
951
|
+
"legal"
|
|
952
|
+
],
|
|
953
|
+
"description": "French VAT number (FR + 2 digits + 9 digits SIREN)",
|
|
954
|
+
"examples": [
|
|
955
|
+
"FR12 362521879",
|
|
956
|
+
"FR 12362521879"
|
|
957
|
+
]
|
|
958
|
+
},
|
|
959
|
+
{
|
|
960
|
+
"id": "regex:fr:phone",
|
|
961
|
+
"entityType": "PHONE",
|
|
962
|
+
"pattern": "\\b0[1-9](?:\\s?\\d{2}){4}\\b",
|
|
963
|
+
"flags": "g",
|
|
964
|
+
"confidence": 0.85,
|
|
965
|
+
"domains": [
|
|
966
|
+
"contact"
|
|
967
|
+
],
|
|
968
|
+
"description": "French phone number (0X XX XX XX XX)",
|
|
969
|
+
"examples": [
|
|
970
|
+
"01 23 45 67 89",
|
|
971
|
+
"06 12 34 56 78",
|
|
972
|
+
"0612345678"
|
|
973
|
+
]
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
"id": "regex:fr:postal",
|
|
977
|
+
"entityType": "ADDRESS",
|
|
978
|
+
"pattern": "\\b\\d{5}\\s+[\\p{L}][\\p{L}\\s'-]+\\b",
|
|
979
|
+
"flags": "gu",
|
|
980
|
+
"confidence": 0.8,
|
|
981
|
+
"domains": [
|
|
982
|
+
"contact"
|
|
983
|
+
],
|
|
984
|
+
"description": "French postal code (5 digits) followed by city name",
|
|
985
|
+
"examples": [
|
|
986
|
+
"75008 Paris",
|
|
987
|
+
"69001 Lyon",
|
|
988
|
+
"13001 Marseille"
|
|
989
|
+
]
|
|
990
|
+
},
|
|
991
|
+
{
|
|
992
|
+
"id": "regex:fr:currency_words",
|
|
993
|
+
"entityType": "CURRENCY",
|
|
994
|
+
"pattern": "(?:(?:soit|montant)\\s+(?:en\\s+)?(?:lettres?|toutes?\\s+lettres?)\\s*:\\s*|(?:la\\s+)?somme\\s+de\\s+)[\\p{L}\\s'-]+(?:euros?|centimes?)\\b",
|
|
995
|
+
"flags": "giu",
|
|
996
|
+
"confidence": 0.9,
|
|
997
|
+
"domains": [
|
|
998
|
+
"financial"
|
|
999
|
+
],
|
|
1000
|
+
"description": "French amount written in words (e.g., \"soit en lettres: huit mille cinq cents euros\")",
|
|
1001
|
+
"examples": [
|
|
1002
|
+
"soit en lettres: huit mille cinq cents euros"
|
|
1003
|
+
]
|
|
1004
|
+
},
|
|
1005
|
+
{
|
|
1006
|
+
"id": "regex:fr:street",
|
|
1007
|
+
"entityType": "ADDRESS",
|
|
1008
|
+
"pattern": "\\b\\d{1,5}(?:\\s*(?:bis|ter))?\\s*,?\\s*(?:rue|avenue|av\\.|boulevard|bd\\.?|place|pl\\.|impasse|allée|passage|chemin|route|quai|cours|square|voie|sentier|résidence)\\s+[\\p{L}][\\p{L}\\s'-]+",
|
|
1009
|
+
"flags": "giu",
|
|
1010
|
+
"confidence": 0.9,
|
|
1011
|
+
"domains": [
|
|
1012
|
+
"contact"
|
|
1013
|
+
],
|
|
1014
|
+
"description": "French street address (number + rue/avenue/boulevard + name)",
|
|
1015
|
+
"examples": [
|
|
1016
|
+
"12 rue de Rivoli",
|
|
1017
|
+
"42 avenue des Champs-Élysées",
|
|
1018
|
+
"8 bis boulevard Haussmann"
|
|
1019
|
+
]
|
|
1020
|
+
},
|
|
1021
|
+
{
|
|
1022
|
+
"id": "regex:fr:company",
|
|
1023
|
+
"entityType": "COMPANY",
|
|
1024
|
+
"pattern": "[\\p{L}][\\p{L}\\s&.']+(?:\\s+)?(?:SARL|SAS|SA|EURL|SCI|SNC|SASU)\\b",
|
|
1025
|
+
"flags": "gu",
|
|
1026
|
+
"confidence": 0.9,
|
|
1027
|
+
"domains": [
|
|
1028
|
+
"legal",
|
|
1029
|
+
"financial"
|
|
1030
|
+
],
|
|
1031
|
+
"description": "French company name with legal form (SARL, SAS, SA, EURL, SCI, SNC)",
|
|
1032
|
+
"examples": [
|
|
1033
|
+
"Total SA",
|
|
1034
|
+
"Capgemini SAS",
|
|
1035
|
+
"Dupont et Fils SARL"
|
|
1036
|
+
]
|
|
1037
|
+
},
|
|
1038
|
+
{
|
|
1039
|
+
"id": "regex:fr:carte_vitale",
|
|
1040
|
+
"entityType": "OTHER",
|
|
1041
|
+
"pattern": "\\b\\d{1}\\s?\\d{2}\\s?\\d{2}\\s?\\d{3}\\s?\\d{3}\\b",
|
|
1042
|
+
"flags": "g",
|
|
1043
|
+
"confidence": 0.7,
|
|
1044
|
+
"domains": [
|
|
1045
|
+
"medical"
|
|
1046
|
+
],
|
|
1047
|
+
"description": "French Carte Vitale number (same as NIR, 13 digits)",
|
|
1048
|
+
"examples": [
|
|
1049
|
+
"1 85 05 780 490"
|
|
1050
|
+
],
|
|
1051
|
+
"falsePositiveNotes": "Duplicate of NIR — overlap resolution will keep one"
|
|
1052
|
+
}
|
|
1053
|
+
]
|
|
1054
|
+
},
|
|
1055
|
+
{
|
|
1056
|
+
"region": "es",
|
|
1057
|
+
"rules": [
|
|
1058
|
+
{
|
|
1059
|
+
"id": "regex:es:dni",
|
|
1060
|
+
"entityType": "SSN",
|
|
1061
|
+
"pattern": "\\b\\d{8}[\\s-]?[A-Z]\\b",
|
|
1062
|
+
"flags": "gi",
|
|
1063
|
+
"confidence": 0.9,
|
|
1064
|
+
"domains": [
|
|
1065
|
+
"identity"
|
|
1066
|
+
],
|
|
1067
|
+
"description": "Spanish DNI (8 digits + letter)",
|
|
1068
|
+
"examples": [
|
|
1069
|
+
"12345678Z",
|
|
1070
|
+
"12345678-Z"
|
|
1071
|
+
],
|
|
1072
|
+
"validate": "dni"
|
|
1073
|
+
},
|
|
1074
|
+
{
|
|
1075
|
+
"id": "regex:es:nie",
|
|
1076
|
+
"entityType": "SSN",
|
|
1077
|
+
"pattern": "\\b[XYZ][\\s-]?\\d{7}[\\s-]?[A-Z]\\b",
|
|
1078
|
+
"flags": "gi",
|
|
1079
|
+
"confidence": 0.9,
|
|
1080
|
+
"domains": [
|
|
1081
|
+
"identity"
|
|
1082
|
+
],
|
|
1083
|
+
"description": "Spanish NIE for foreigners (X/Y/Z + 7 digits + letter)",
|
|
1084
|
+
"examples": [
|
|
1085
|
+
"X1234567L",
|
|
1086
|
+
"Y-1234567-A"
|
|
1087
|
+
]
|
|
1088
|
+
},
|
|
1089
|
+
{
|
|
1090
|
+
"id": "regex:es:cif",
|
|
1091
|
+
"entityType": "SSN",
|
|
1092
|
+
"pattern": "\\b[A-H]\\d{7}[0-9A-J]\\b",
|
|
1093
|
+
"flags": "gi",
|
|
1094
|
+
"confidence": 0.8,
|
|
1095
|
+
"domains": [
|
|
1096
|
+
"financial",
|
|
1097
|
+
"legal"
|
|
1098
|
+
],
|
|
1099
|
+
"description": "Spanish CIF company tax ID",
|
|
1100
|
+
"examples": [
|
|
1101
|
+
"A12345678",
|
|
1102
|
+
"B87654321"
|
|
1103
|
+
]
|
|
1104
|
+
},
|
|
1105
|
+
{
|
|
1106
|
+
"id": "regex:es:cuenta_bancaria",
|
|
1107
|
+
"entityType": "SSN",
|
|
1108
|
+
"pattern": "\\b(?:ES)?\\d{2}\\s?\\d{4}\\s?\\d{4}\\s?\\d{4}\\s?\\d{4}\\s?\\d{4}\\b",
|
|
1109
|
+
"flags": "gi",
|
|
1110
|
+
"confidence": 0.8,
|
|
1111
|
+
"domains": [
|
|
1112
|
+
"financial"
|
|
1113
|
+
],
|
|
1114
|
+
"description": "Spanish bank account number (CCC, 20 digits)",
|
|
1115
|
+
"examples": [
|
|
1116
|
+
"ES12 1234 5678 9012 3456 7890"
|
|
1117
|
+
]
|
|
1118
|
+
},
|
|
1119
|
+
{
|
|
1120
|
+
"id": "regex:es:phone",
|
|
1121
|
+
"entityType": "PHONE",
|
|
1122
|
+
"pattern": "\\b(?:\\+?34[\\s-]?)?[6789]\\d{2}[\\s-]?\\d{3}[\\s-]?\\d{3}\\b",
|
|
1123
|
+
"flags": "g",
|
|
1124
|
+
"confidence": 0.8,
|
|
1125
|
+
"domains": [
|
|
1126
|
+
"contact"
|
|
1127
|
+
],
|
|
1128
|
+
"description": "Spanish phone number (9 digits, optionally with +34)",
|
|
1129
|
+
"examples": [
|
|
1130
|
+
"+34 612 345 678",
|
|
1131
|
+
"912 345 678"
|
|
1132
|
+
]
|
|
1133
|
+
},
|
|
1134
|
+
{
|
|
1135
|
+
"id": "regex:es:postal",
|
|
1136
|
+
"entityType": "ADDRESS",
|
|
1137
|
+
"pattern": "\\b\\d{5}\\s+[\\p{L}][\\p{L}\\s'-]+\\b",
|
|
1138
|
+
"flags": "gu",
|
|
1139
|
+
"confidence": 0.75,
|
|
1140
|
+
"domains": [
|
|
1141
|
+
"contact"
|
|
1142
|
+
],
|
|
1143
|
+
"description": "Spanish postal code (5 digits) followed by city name",
|
|
1144
|
+
"examples": [
|
|
1145
|
+
"28001 Madrid",
|
|
1146
|
+
"08001 Barcelona"
|
|
1147
|
+
]
|
|
1148
|
+
},
|
|
1149
|
+
{
|
|
1150
|
+
"id": "regex:es:currency_words",
|
|
1151
|
+
"entityType": "CURRENCY",
|
|
1152
|
+
"pattern": "(?:(?:en\\s+)?(?:letras?|palabras?)\\s*:\\s*|(?:la\\s+)?(?:cantidad|suma)\\s+de\\s+)[\\p{L}\\s-]+(?:euros?|céntimos?|pesos?|centavos?)\\b",
|
|
1153
|
+
"flags": "giu",
|
|
1154
|
+
"confidence": 0.9,
|
|
1155
|
+
"domains": [
|
|
1156
|
+
"financial"
|
|
1157
|
+
],
|
|
1158
|
+
"description": "Spanish amount written in words (e.g., \"en letras: ocho mil quinientos euros\")",
|
|
1159
|
+
"examples": [
|
|
1160
|
+
"en letras: ocho mil quinientos euros"
|
|
1161
|
+
]
|
|
1162
|
+
},
|
|
1163
|
+
{
|
|
1164
|
+
"id": "regex:es:street",
|
|
1165
|
+
"entityType": "ADDRESS",
|
|
1166
|
+
"pattern": "(?:(?:C(?:alle)?|Av(?:enida|da)?|Avda|Pza|Plaza|Pl|Paseo|P\\.º|Ronda|Ctra|Carretera|Camino|Travesía|Glorieta)\\.?\\s+)[\\p{L}][\\p{L}\\s'-]+(?:,?\\s*(?:n\\.?º?\\s*)?\\d+)?",
|
|
1167
|
+
"flags": "giu",
|
|
1168
|
+
"confidence": 0.85,
|
|
1169
|
+
"domains": [
|
|
1170
|
+
"contact"
|
|
1171
|
+
],
|
|
1172
|
+
"description": "Spanish street address (Calle/Avenida/Plaza + name + optional number)",
|
|
1173
|
+
"examples": [
|
|
1174
|
+
"Calle Mayor 15",
|
|
1175
|
+
"Av. de la Constitución 3",
|
|
1176
|
+
"Plaza de España"
|
|
1177
|
+
]
|
|
1178
|
+
},
|
|
1179
|
+
{
|
|
1180
|
+
"id": "regex:es:company",
|
|
1181
|
+
"entityType": "COMPANY",
|
|
1182
|
+
"pattern": "[\\p{L}][\\p{L}\\s&.']+(?:\\s+)?(?:S\\.L\\.U\\.|S\\.L\\.U|S\\.L\\.|S\\.L|S\\.A\\.U\\.|S\\.A\\.U|S\\.A\\.|S\\.A|S\\.C\\.)\\b",
|
|
1183
|
+
"flags": "gu",
|
|
1184
|
+
"confidence": 0.9,
|
|
1185
|
+
"domains": [
|
|
1186
|
+
"legal",
|
|
1187
|
+
"financial"
|
|
1188
|
+
],
|
|
1189
|
+
"description": "Spanish company name with legal form (S.L., S.A., S.L.U., S.A.U., S.C.)",
|
|
1190
|
+
"examples": [
|
|
1191
|
+
"Telefónica S.A.",
|
|
1192
|
+
"Construcciones García S.L.",
|
|
1193
|
+
"Inditex S.A."
|
|
1194
|
+
]
|
|
1195
|
+
},
|
|
1196
|
+
{
|
|
1197
|
+
"id": "regex:es:nuss",
|
|
1198
|
+
"entityType": "SSN",
|
|
1199
|
+
"pattern": "\\b\\d{2}[-/]?\\d{8}[-/]?\\d{2}\\b",
|
|
1200
|
+
"flags": "g",
|
|
1201
|
+
"confidence": 0.75,
|
|
1202
|
+
"domains": [
|
|
1203
|
+
"medical",
|
|
1204
|
+
"hr"
|
|
1205
|
+
],
|
|
1206
|
+
"description": "Spanish Social Security Number (NUSS/NAF, 12 digits: province + sequential + check)",
|
|
1207
|
+
"examples": [
|
|
1208
|
+
"28-12345678-56"
|
|
1209
|
+
]
|
|
1210
|
+
}
|
|
1211
|
+
]
|
|
1212
|
+
},
|
|
1213
|
+
{
|
|
1214
|
+
"region": "pt",
|
|
1215
|
+
"rules": [
|
|
1216
|
+
{
|
|
1217
|
+
"id": "regex:pt:cc",
|
|
1218
|
+
"entityType": "SSN",
|
|
1219
|
+
"pattern": "\\b\\d{9}\\s?[A-Z]{2}\\d\\b",
|
|
1220
|
+
"flags": "gi",
|
|
1221
|
+
"confidence": 0.85,
|
|
1222
|
+
"domains": [
|
|
1223
|
+
"identity"
|
|
1224
|
+
],
|
|
1225
|
+
"description": "Portuguese Cartão de Cidadão number (citizen card)",
|
|
1226
|
+
"examples": [
|
|
1227
|
+
"123456789 ZZ1"
|
|
1228
|
+
]
|
|
1229
|
+
},
|
|
1230
|
+
{
|
|
1231
|
+
"id": "regex:pt:nif",
|
|
1232
|
+
"entityType": "SSN",
|
|
1233
|
+
"pattern": "\\b\\d{9}\\b",
|
|
1234
|
+
"flags": "g",
|
|
1235
|
+
"confidence": 0.8,
|
|
1236
|
+
"domains": [
|
|
1237
|
+
"financial",
|
|
1238
|
+
"identity"
|
|
1239
|
+
],
|
|
1240
|
+
"description": "Portuguese NIF tax number (9 digits)",
|
|
1241
|
+
"examples": [
|
|
1242
|
+
"123456789"
|
|
1243
|
+
],
|
|
1244
|
+
"falsePositiveNotes": "9 digits is very broad",
|
|
1245
|
+
"validate": "nif"
|
|
1246
|
+
},
|
|
1247
|
+
{
|
|
1248
|
+
"id": "regex:pt:phone",
|
|
1249
|
+
"entityType": "PHONE",
|
|
1250
|
+
"pattern": "\\b(?:\\+?351[\\s-]?)?\\d{3}[\\s-]?\\d{3}[\\s-]?\\d{3}\\b",
|
|
1251
|
+
"flags": "g",
|
|
1252
|
+
"confidence": 0.8,
|
|
1253
|
+
"domains": [
|
|
1254
|
+
"contact"
|
|
1255
|
+
],
|
|
1256
|
+
"description": "Portuguese phone number (9 digits, optionally with +351)",
|
|
1257
|
+
"examples": [
|
|
1258
|
+
"+351 912 345 678",
|
|
1259
|
+
"912-345-678"
|
|
1260
|
+
]
|
|
1261
|
+
},
|
|
1262
|
+
{
|
|
1263
|
+
"id": "regex:pt:postal",
|
|
1264
|
+
"entityType": "ADDRESS",
|
|
1265
|
+
"pattern": "\\b\\d{4}-\\d{3}\\s+[\\p{L}][\\p{L}\\s'-]+\\b",
|
|
1266
|
+
"flags": "gu",
|
|
1267
|
+
"confidence": 0.85,
|
|
1268
|
+
"domains": [
|
|
1269
|
+
"contact"
|
|
1270
|
+
],
|
|
1271
|
+
"description": "Portuguese postal code (XXXX-XXX) followed by city name",
|
|
1272
|
+
"examples": [
|
|
1273
|
+
"1000-001 Lisboa",
|
|
1274
|
+
"4000-322 Porto"
|
|
1275
|
+
]
|
|
1276
|
+
},
|
|
1277
|
+
{
|
|
1278
|
+
"id": "regex:pt:currency_words",
|
|
1279
|
+
"entityType": "CURRENCY",
|
|
1280
|
+
"pattern": "(?:(?:por\\s+)?extenso\\s*:\\s*|(?:a\\s+)?(?:quantia|importância|soma)\\s+de\\s+)[\\p{L}\\s-]+(?:euros?|cêntimos?|reais|centavos?)\\b",
|
|
1281
|
+
"flags": "giu",
|
|
1282
|
+
"confidence": 0.9,
|
|
1283
|
+
"domains": [
|
|
1284
|
+
"financial"
|
|
1285
|
+
],
|
|
1286
|
+
"description": "Portuguese amount written in words (e.g., \"por extenso: oito mil e quinhentos euros\")",
|
|
1287
|
+
"examples": [
|
|
1288
|
+
"por extenso: oito mil e quinhentos euros"
|
|
1289
|
+
]
|
|
1290
|
+
},
|
|
1291
|
+
{
|
|
1292
|
+
"id": "regex:pt:street",
|
|
1293
|
+
"entityType": "ADDRESS",
|
|
1294
|
+
"pattern": "(?:(?:Rua|R\\.|Avenida|Av\\.|Praça|Pç\\.|Travessa|Tv\\.|Largo|Lg\\.|Alameda|Al\\.|Estrada|Est\\.)\\s+)[\\p{L}][\\p{L}\\s'-]+(?:,?\\s*(?:n\\.?º?\\s*)?\\d+)?",
|
|
1295
|
+
"flags": "giu",
|
|
1296
|
+
"confidence": 0.85,
|
|
1297
|
+
"domains": [
|
|
1298
|
+
"contact"
|
|
1299
|
+
],
|
|
1300
|
+
"description": "Portuguese street address (Rua/Avenida/Praça + name + optional number)",
|
|
1301
|
+
"examples": [
|
|
1302
|
+
"Rua Augusta 42",
|
|
1303
|
+
"Av. da Liberdade 10",
|
|
1304
|
+
"Praça do Comércio"
|
|
1305
|
+
]
|
|
1306
|
+
},
|
|
1307
|
+
{
|
|
1308
|
+
"id": "regex:pt:company",
|
|
1309
|
+
"entityType": "COMPANY",
|
|
1310
|
+
"pattern": "[\\p{L}][\\p{L}\\s&.']+(?:\\s+)?(?:Lda\\.?|S\\.A\\.?|SGPS)\\b",
|
|
1311
|
+
"flags": "gu",
|
|
1312
|
+
"confidence": 0.9,
|
|
1313
|
+
"domains": [
|
|
1314
|
+
"legal",
|
|
1315
|
+
"financial"
|
|
1316
|
+
],
|
|
1317
|
+
"description": "Portuguese company name with legal form (Lda., S.A., SGPS)",
|
|
1318
|
+
"examples": [
|
|
1319
|
+
"Galp Energia S.A.",
|
|
1320
|
+
"Construções Silva Lda.",
|
|
1321
|
+
"EDP SGPS"
|
|
1322
|
+
]
|
|
1323
|
+
}
|
|
1324
|
+
]
|
|
1325
|
+
},
|
|
1326
|
+
{
|
|
1327
|
+
"region": "se",
|
|
1328
|
+
"rules": [
|
|
1329
|
+
{
|
|
1330
|
+
"id": "regex:se:personnummer",
|
|
1331
|
+
"entityType": "SSN",
|
|
1332
|
+
"pattern": "\\b\\d{6}[-+]?\\d{4}\\b",
|
|
1333
|
+
"flags": "g",
|
|
1334
|
+
"confidence": 0.85,
|
|
1335
|
+
"domains": [
|
|
1336
|
+
"identity",
|
|
1337
|
+
"hr",
|
|
1338
|
+
"medical"
|
|
1339
|
+
],
|
|
1340
|
+
"description": "Swedish personnummer (YYMMDD-XXXX or YYMMDDXXXX)",
|
|
1341
|
+
"examples": [
|
|
1342
|
+
"850523-0006",
|
|
1343
|
+
"8505230006"
|
|
1344
|
+
],
|
|
1345
|
+
"validate": "personnummer"
|
|
1346
|
+
},
|
|
1347
|
+
{
|
|
1348
|
+
"id": "regex:se:personnummer_12",
|
|
1349
|
+
"entityType": "SSN",
|
|
1350
|
+
"pattern": "\\b(?:19|20)\\d{6}[-+]?\\d{4}\\b",
|
|
1351
|
+
"flags": "g",
|
|
1352
|
+
"confidence": 0.9,
|
|
1353
|
+
"domains": [
|
|
1354
|
+
"identity",
|
|
1355
|
+
"hr",
|
|
1356
|
+
"medical"
|
|
1357
|
+
],
|
|
1358
|
+
"description": "Swedish personnummer 12-digit format (YYYYMMDD-XXXX)",
|
|
1359
|
+
"examples": [
|
|
1360
|
+
"19850523-1478",
|
|
1361
|
+
"198505231478"
|
|
1362
|
+
]
|
|
1363
|
+
},
|
|
1364
|
+
{
|
|
1365
|
+
"id": "regex:se:samordningsnummer",
|
|
1366
|
+
"entityType": "SSN",
|
|
1367
|
+
"pattern": "\\b\\d{6}[-+]?\\d{4}\\b",
|
|
1368
|
+
"flags": "g",
|
|
1369
|
+
"confidence": 0.7,
|
|
1370
|
+
"domains": [
|
|
1371
|
+
"identity"
|
|
1372
|
+
],
|
|
1373
|
+
"description": "Swedish samordningsnummer (coordination number, day +60)",
|
|
1374
|
+
"examples": [
|
|
1375
|
+
"850583-1478"
|
|
1376
|
+
],
|
|
1377
|
+
"falsePositiveNotes": "Same format as personnummer — differentiated by day > 60",
|
|
1378
|
+
"validate": "samordningsnummer"
|
|
1379
|
+
},
|
|
1380
|
+
{
|
|
1381
|
+
"id": "regex:se:organisationsnummer",
|
|
1382
|
+
"entityType": "SSN",
|
|
1383
|
+
"pattern": "\\b\\d{6}-?\\d{4}\\b",
|
|
1384
|
+
"flags": "g",
|
|
1385
|
+
"confidence": 0.6,
|
|
1386
|
+
"domains": [
|
|
1387
|
+
"financial",
|
|
1388
|
+
"legal"
|
|
1389
|
+
],
|
|
1390
|
+
"description": "Swedish organisationsnummer (company number, 10 digits)",
|
|
1391
|
+
"examples": [
|
|
1392
|
+
"556036-0793"
|
|
1393
|
+
],
|
|
1394
|
+
"falsePositiveNotes": "Same 10-digit format as personnummer"
|
|
1395
|
+
},
|
|
1396
|
+
{
|
|
1397
|
+
"id": "regex:se:phone",
|
|
1398
|
+
"entityType": "PHONE",
|
|
1399
|
+
"pattern": "\\b(?:\\+?46[\\s-]?)?0?\\d{1,3}[\\s-]?\\d{2,3}[\\s-]?\\d{2}[\\s-]?\\d{2}\\b",
|
|
1400
|
+
"flags": "g",
|
|
1401
|
+
"confidence": 0.75,
|
|
1402
|
+
"domains": [
|
|
1403
|
+
"contact"
|
|
1404
|
+
],
|
|
1405
|
+
"description": "Swedish phone number (variable-length area code)",
|
|
1406
|
+
"examples": [
|
|
1407
|
+
"+46 8 123 45 67",
|
|
1408
|
+
"070-123 45 67"
|
|
1409
|
+
]
|
|
1410
|
+
},
|
|
1411
|
+
{
|
|
1412
|
+
"id": "regex:se:postal",
|
|
1413
|
+
"entityType": "ADDRESS",
|
|
1414
|
+
"pattern": "\\b\\d{3}\\s?\\d{2}\\s+[\\p{L}][\\p{L}\\s-]+\\b",
|
|
1415
|
+
"flags": "gu",
|
|
1416
|
+
"confidence": 0.8,
|
|
1417
|
+
"domains": [
|
|
1418
|
+
"contact"
|
|
1419
|
+
],
|
|
1420
|
+
"description": "Swedish postal code (XXX XX) followed by city name",
|
|
1421
|
+
"examples": [
|
|
1422
|
+
"111 22 Stockholm",
|
|
1423
|
+
"41301 Göteborg"
|
|
1424
|
+
]
|
|
1425
|
+
},
|
|
1426
|
+
{
|
|
1427
|
+
"id": "regex:se:currency_words",
|
|
1428
|
+
"entityType": "CURRENCY",
|
|
1429
|
+
"pattern": "(?:(?:med\\s+)?(?:bokstäver|ord)\\s*:\\s*|(?:summan|beloppet)\\s+)[\\p{L}\\s-]+(?:kronor|öre)\\b",
|
|
1430
|
+
"flags": "giu",
|
|
1431
|
+
"confidence": 0.9,
|
|
1432
|
+
"domains": [
|
|
1433
|
+
"financial"
|
|
1434
|
+
],
|
|
1435
|
+
"description": "Swedish amount written in words (e.g., \"med bokstäver: åttatusen femhundra kronor\")",
|
|
1436
|
+
"examples": [
|
|
1437
|
+
"med bokstäver: åttatusen femhundra kronor"
|
|
1438
|
+
]
|
|
1439
|
+
},
|
|
1440
|
+
{
|
|
1441
|
+
"id": "regex:se:street",
|
|
1442
|
+
"entityType": "ADDRESS",
|
|
1443
|
+
"pattern": "[\\p{L}][\\p{L}\\s-]*(?:gatan|vägen|stigen|torget|platsen|gränd|backen|liden|ängen)\\s+\\d+[\\p{L}]?",
|
|
1444
|
+
"flags": "giu",
|
|
1445
|
+
"confidence": 0.9,
|
|
1446
|
+
"domains": [
|
|
1447
|
+
"contact"
|
|
1448
|
+
],
|
|
1449
|
+
"description": "Swedish street address (name + gatan/vägen/etc. + number)",
|
|
1450
|
+
"examples": [
|
|
1451
|
+
"Drottninggatan 42",
|
|
1452
|
+
"Sveavägen 15",
|
|
1453
|
+
"Stortorget 3"
|
|
1454
|
+
]
|
|
1455
|
+
},
|
|
1456
|
+
{
|
|
1457
|
+
"id": "regex:se:company",
|
|
1458
|
+
"entityType": "COMPANY",
|
|
1459
|
+
"pattern": "[\\p{L}][\\p{L}\\s&.']+(?:\\s+)?(?:AB|HB|KB)\\b",
|
|
1460
|
+
"flags": "gu",
|
|
1461
|
+
"confidence": 0.8,
|
|
1462
|
+
"domains": [
|
|
1463
|
+
"legal",
|
|
1464
|
+
"financial"
|
|
1465
|
+
],
|
|
1466
|
+
"description": "Swedish company name with legal form (AB, HB, KB)",
|
|
1467
|
+
"examples": [
|
|
1468
|
+
"Volvo AB",
|
|
1469
|
+
"Handelsbanken AB",
|
|
1470
|
+
"Ericsson AB"
|
|
1471
|
+
]
|
|
1472
|
+
}
|
|
1473
|
+
]
|
|
1474
|
+
},
|
|
1475
|
+
{
|
|
1476
|
+
"region": "no",
|
|
1477
|
+
"rules": [
|
|
1478
|
+
{
|
|
1479
|
+
"id": "regex:no:fodselsnummer",
|
|
1480
|
+
"entityType": "SSN",
|
|
1481
|
+
"pattern": "\\b\\d{6}\\s?\\d{5}\\b",
|
|
1482
|
+
"flags": "g",
|
|
1483
|
+
"confidence": 0.8,
|
|
1484
|
+
"domains": [
|
|
1485
|
+
"identity",
|
|
1486
|
+
"hr",
|
|
1487
|
+
"medical"
|
|
1488
|
+
],
|
|
1489
|
+
"description": "Norwegian fødselsnummer (birth number, 11 digits, DDMMYY + 5)",
|
|
1490
|
+
"examples": [
|
|
1491
|
+
"01019912368"
|
|
1492
|
+
],
|
|
1493
|
+
"falsePositiveNotes": "11-digit sequences are common in other contexts",
|
|
1494
|
+
"validate": "fodselsnummer"
|
|
1495
|
+
},
|
|
1496
|
+
{
|
|
1497
|
+
"id": "regex:no:d_nummer",
|
|
1498
|
+
"entityType": "SSN",
|
|
1499
|
+
"pattern": "\\b\\d{6}\\s?\\d{5}\\b",
|
|
1500
|
+
"flags": "g",
|
|
1501
|
+
"confidence": 0.4,
|
|
1502
|
+
"domains": [
|
|
1503
|
+
"identity"
|
|
1504
|
+
],
|
|
1505
|
+
"description": "Norwegian D-nummer (temporary ID for foreigners, 11 digits, day +40)",
|
|
1506
|
+
"examples": [
|
|
1507
|
+
"41019912345"
|
|
1508
|
+
],
|
|
1509
|
+
"falsePositiveNotes": "Very broad match — 9 digits",
|
|
1510
|
+
"validate": "dNummer"
|
|
1511
|
+
},
|
|
1512
|
+
{
|
|
1513
|
+
"id": "regex:no:orgnr",
|
|
1514
|
+
"entityType": "SSN",
|
|
1515
|
+
"pattern": "\\b\\d{9}\\s?(?:MVA)?\\b",
|
|
1516
|
+
"flags": "g",
|
|
1517
|
+
"confidence": 0.6,
|
|
1518
|
+
"domains": [
|
|
1519
|
+
"financial",
|
|
1520
|
+
"legal"
|
|
1521
|
+
],
|
|
1522
|
+
"description": "Norwegian organization number (9 digits, optionally followed by MVA)",
|
|
1523
|
+
"examples": [
|
|
1524
|
+
"123456789",
|
|
1525
|
+
"123456789 MVA"
|
|
1526
|
+
]
|
|
1527
|
+
},
|
|
1528
|
+
{
|
|
1529
|
+
"id": "regex:no:phone",
|
|
1530
|
+
"entityType": "PHONE",
|
|
1531
|
+
"pattern": "\\b(?:\\+?47[\\s-]?)?\\d{2}[\\s-]?\\d{2}[\\s-]?\\d{2}[\\s-]?\\d{2}\\b",
|
|
1532
|
+
"flags": "g",
|
|
1533
|
+
"confidence": 0.8,
|
|
1534
|
+
"domains": [
|
|
1535
|
+
"contact"
|
|
1536
|
+
],
|
|
1537
|
+
"description": "Norwegian phone number (8 digits, optionally with +47)",
|
|
1538
|
+
"examples": [
|
|
1539
|
+
"+47 12 34 56 78",
|
|
1540
|
+
"12345678"
|
|
1541
|
+
]
|
|
1542
|
+
},
|
|
1543
|
+
{
|
|
1544
|
+
"id": "regex:no:postal",
|
|
1545
|
+
"entityType": "ADDRESS",
|
|
1546
|
+
"pattern": "\\b\\d{4}\\s+[\\p{L}][\\p{L}\\s-]+\\b",
|
|
1547
|
+
"flags": "gu",
|
|
1548
|
+
"confidence": 0.8,
|
|
1549
|
+
"domains": [
|
|
1550
|
+
"contact"
|
|
1551
|
+
],
|
|
1552
|
+
"description": "Norwegian postal code (4 digits) followed by city name",
|
|
1553
|
+
"examples": [
|
|
1554
|
+
"0001 Oslo",
|
|
1555
|
+
"5003 Bergen"
|
|
1556
|
+
]
|
|
1557
|
+
},
|
|
1558
|
+
{
|
|
1559
|
+
"id": "regex:no:currency_words",
|
|
1560
|
+
"entityType": "CURRENCY",
|
|
1561
|
+
"pattern": "(?:(?:med\\s+)?(?:bokstaver|ord)\\s*:\\s*|(?:summen|beløpet)\\s+)[\\p{L}\\s-]+(?:kroner|øre)\\b",
|
|
1562
|
+
"flags": "giu",
|
|
1563
|
+
"confidence": 0.9,
|
|
1564
|
+
"domains": [
|
|
1565
|
+
"financial"
|
|
1566
|
+
],
|
|
1567
|
+
"description": "Norwegian amount written in words (e.g., \"med bokstaver: åtte tusen fem hundre kroner\")",
|
|
1568
|
+
"examples": [
|
|
1569
|
+
"med bokstaver: åtte tusen fem hundre kroner"
|
|
1570
|
+
]
|
|
1571
|
+
},
|
|
1572
|
+
{
|
|
1573
|
+
"id": "regex:no:street",
|
|
1574
|
+
"entityType": "ADDRESS",
|
|
1575
|
+
"pattern": "[\\p{L}][\\p{L}\\s-]*(?:gata|gaten|gate|veien|vegen|vei|veg|stien|torget|plassen|plass|allé|alleen)\\s+\\d+[\\p{L}]?",
|
|
1576
|
+
"flags": "giu",
|
|
1577
|
+
"confidence": 0.9,
|
|
1578
|
+
"domains": [
|
|
1579
|
+
"contact"
|
|
1580
|
+
],
|
|
1581
|
+
"description": "Norwegian street address (name + gate/veien/vei/etc. + number)",
|
|
1582
|
+
"examples": [
|
|
1583
|
+
"Karl Johans gate 22",
|
|
1584
|
+
"Storgata 15",
|
|
1585
|
+
"Bygdøy allé 3"
|
|
1586
|
+
]
|
|
1587
|
+
},
|
|
1588
|
+
{
|
|
1589
|
+
"id": "regex:no:company",
|
|
1590
|
+
"entityType": "COMPANY",
|
|
1591
|
+
"pattern": "[\\p{L}][\\p{L}\\s&.']+(?:\\s+)?(?:AS|ASA|ANS|DA)\\b",
|
|
1592
|
+
"flags": "gu",
|
|
1593
|
+
"confidence": 0.8,
|
|
1594
|
+
"domains": [
|
|
1595
|
+
"legal",
|
|
1596
|
+
"financial"
|
|
1597
|
+
],
|
|
1598
|
+
"description": "Norwegian company name with legal form (AS, ASA, ANS, DA)",
|
|
1599
|
+
"examples": [
|
|
1600
|
+
"Equinor ASA",
|
|
1601
|
+
"Telenor ASA",
|
|
1602
|
+
"Nordea Bank ASA"
|
|
1603
|
+
]
|
|
1604
|
+
}
|
|
1605
|
+
]
|
|
1606
|
+
},
|
|
1607
|
+
{
|
|
1608
|
+
"region": "it",
|
|
1609
|
+
"rules": [
|
|
1610
|
+
{
|
|
1611
|
+
"id": "regex:it:codice_fiscale",
|
|
1612
|
+
"entityType": "SSN",
|
|
1613
|
+
"pattern": "\\b[A-Z]{6}\\d{2}[A-EHLMPRST]\\d{2}[A-Z]\\d{3}[A-Z]\\b",
|
|
1614
|
+
"flags": "gi",
|
|
1615
|
+
"confidence": 0.9,
|
|
1616
|
+
"domains": [
|
|
1617
|
+
"identity",
|
|
1618
|
+
"hr",
|
|
1619
|
+
"medical"
|
|
1620
|
+
],
|
|
1621
|
+
"description": "Italian fiscal code (Codice Fiscale, 16 alphanumeric characters)",
|
|
1622
|
+
"examples": [
|
|
1623
|
+
"RSSMRA85M01H501Q"
|
|
1624
|
+
],
|
|
1625
|
+
"validate": "codiceFiscale"
|
|
1626
|
+
},
|
|
1627
|
+
{
|
|
1628
|
+
"id": "regex:it:partita_iva",
|
|
1629
|
+
"entityType": "SSN",
|
|
1630
|
+
"pattern": "\\bIT\\d{11}\\b",
|
|
1631
|
+
"flags": "gi",
|
|
1632
|
+
"confidence": 0.75,
|
|
1633
|
+
"domains": [
|
|
1634
|
+
"financial",
|
|
1635
|
+
"legal"
|
|
1636
|
+
],
|
|
1637
|
+
"description": "Italian VAT number (Partita IVA, IT + 11 digits)",
|
|
1638
|
+
"examples": [
|
|
1639
|
+
"IT12345678903"
|
|
1640
|
+
],
|
|
1641
|
+
"validate": "partitaIva"
|
|
1642
|
+
},
|
|
1643
|
+
{
|
|
1644
|
+
"id": "regex:it:phone_mobile",
|
|
1645
|
+
"entityType": "PHONE",
|
|
1646
|
+
"pattern": "\\b(?:\\+?39[\\s-]?)?3[0-9]{2}[\\s-]?\\d{3}[\\s-]?\\d{4}\\b",
|
|
1647
|
+
"flags": "g",
|
|
1648
|
+
"confidence": 0.8,
|
|
1649
|
+
"domains": [
|
|
1650
|
+
"contact"
|
|
1651
|
+
],
|
|
1652
|
+
"description": "Italian mobile phone number (3xx prefix)",
|
|
1653
|
+
"examples": [
|
|
1654
|
+
"+39 345 123 4567",
|
|
1655
|
+
"3451234567"
|
|
1656
|
+
]
|
|
1657
|
+
},
|
|
1658
|
+
{
|
|
1659
|
+
"id": "regex:it:phone_landline",
|
|
1660
|
+
"entityType": "PHONE",
|
|
1661
|
+
"pattern": "\\b(?:\\+?39[\\s-]?)?0\\d{1,3}[\\s-]?\\d{4,8}\\b",
|
|
1662
|
+
"flags": "g",
|
|
1663
|
+
"confidence": 0.7,
|
|
1664
|
+
"domains": [
|
|
1665
|
+
"contact"
|
|
1666
|
+
],
|
|
1667
|
+
"description": "Italian landline phone number (0x prefix)",
|
|
1668
|
+
"examples": [
|
|
1669
|
+
"+39 06 12345678",
|
|
1670
|
+
"02 12345678"
|
|
1671
|
+
]
|
|
1672
|
+
},
|
|
1673
|
+
{
|
|
1674
|
+
"id": "regex:it:street",
|
|
1675
|
+
"entityType": "ADDRESS",
|
|
1676
|
+
"pattern": "(?:via|viale|v\\.le|piazza|p\\.zza|piazzale|corso|c\\.so|largo|vicolo|borgo|salita)\\s+[\\p{L}][\\p{L}\\s'.,-]+\\s*(?:,?\\s*n[°.]?\\s*)?\\d{1,5}[\\p{L}]?",
|
|
1677
|
+
"flags": "giu",
|
|
1678
|
+
"confidence": 0.9,
|
|
1679
|
+
"domains": [
|
|
1680
|
+
"contact"
|
|
1681
|
+
],
|
|
1682
|
+
"description": "Italian street address (Via/Piazza/Corso + name + number)",
|
|
1683
|
+
"examples": [
|
|
1684
|
+
"Via Roma, 42",
|
|
1685
|
+
"Piazza Navona 1",
|
|
1686
|
+
"Corso Vittorio Emanuele II, n. 23"
|
|
1687
|
+
]
|
|
1688
|
+
},
|
|
1689
|
+
{
|
|
1690
|
+
"id": "regex:it:postal",
|
|
1691
|
+
"entityType": "ADDRESS",
|
|
1692
|
+
"pattern": "\\b\\d{5}\\s+[\\p{L}][\\p{L}\\s-]+\\b",
|
|
1693
|
+
"flags": "gu",
|
|
1694
|
+
"confidence": 0.8,
|
|
1695
|
+
"domains": [
|
|
1696
|
+
"contact"
|
|
1697
|
+
],
|
|
1698
|
+
"description": "Italian postal code (CAP, 5 digits) followed by city name",
|
|
1699
|
+
"examples": [
|
|
1700
|
+
"00100 Roma",
|
|
1701
|
+
"20121 Milano"
|
|
1702
|
+
],
|
|
1703
|
+
"falsePositiveNotes": "5-digit postal codes overlap with US ZIP codes and other number formats"
|
|
1704
|
+
},
|
|
1705
|
+
{
|
|
1706
|
+
"id": "regex:it:company",
|
|
1707
|
+
"entityType": "COMPANY",
|
|
1708
|
+
"pattern": "[\\p{L}][\\p{L}\\s&.']+(?:\\s+)?(?:S\\.?r\\.?l\\.?|S\\.?p\\.?A\\.?|S\\.?a\\.?s\\.?|S\\.?n\\.?c\\.?|S\\.?a\\.?p\\.?a\\.?)\\b",
|
|
1709
|
+
"flags": "gu",
|
|
1710
|
+
"confidence": 0.9,
|
|
1711
|
+
"domains": [
|
|
1712
|
+
"legal",
|
|
1713
|
+
"financial"
|
|
1714
|
+
],
|
|
1715
|
+
"description": "Italian company name with legal form (S.r.l., S.p.A., S.a.s., S.n.c., S.a.p.a.)",
|
|
1716
|
+
"examples": [
|
|
1717
|
+
"Fiat Chrysler S.p.A.",
|
|
1718
|
+
"Ristorante Da Mario S.r.l."
|
|
1719
|
+
]
|
|
1720
|
+
}
|
|
1721
|
+
]
|
|
1722
|
+
},
|
|
1723
|
+
{
|
|
1724
|
+
"region": "nl",
|
|
1725
|
+
"rules": [
|
|
1726
|
+
{
|
|
1727
|
+
"id": "regex:nl:bsn",
|
|
1728
|
+
"entityType": "SSN",
|
|
1729
|
+
"pattern": "\\b\\d{9}\\b",
|
|
1730
|
+
"flags": "g",
|
|
1731
|
+
"confidence": 0.85,
|
|
1732
|
+
"domains": [
|
|
1733
|
+
"identity",
|
|
1734
|
+
"hr"
|
|
1735
|
+
],
|
|
1736
|
+
"description": "Dutch citizen service number (BSN, 9 digits with elfproef validation)",
|
|
1737
|
+
"examples": [
|
|
1738
|
+
"123456782"
|
|
1739
|
+
],
|
|
1740
|
+
"falsePositiveNotes": "9 bare digits match many formats; elfproef validation essential",
|
|
1741
|
+
"validate": "bsn"
|
|
1742
|
+
},
|
|
1743
|
+
{
|
|
1744
|
+
"id": "regex:nl:phone_mobile",
|
|
1745
|
+
"entityType": "PHONE",
|
|
1746
|
+
"pattern": "\\b(?:\\+?31[\\s-]?|0)6[\\s-]?\\d{4}[\\s-]?\\d{4}\\b",
|
|
1747
|
+
"flags": "g",
|
|
1748
|
+
"confidence": 0.85,
|
|
1749
|
+
"domains": [
|
|
1750
|
+
"contact"
|
|
1751
|
+
],
|
|
1752
|
+
"description": "Dutch mobile phone number (06 prefix)",
|
|
1753
|
+
"examples": [
|
|
1754
|
+
"+31 6 1234 5678",
|
|
1755
|
+
"06 12345678"
|
|
1756
|
+
]
|
|
1757
|
+
},
|
|
1758
|
+
{
|
|
1759
|
+
"id": "regex:nl:phone_landline",
|
|
1760
|
+
"entityType": "PHONE",
|
|
1761
|
+
"pattern": "\\b(?:\\+?31[\\s-]?|0)[1-5]\\d[\\s-]?\\d{3}[\\s-]?\\d{4}\\b",
|
|
1762
|
+
"flags": "g",
|
|
1763
|
+
"confidence": 0.75,
|
|
1764
|
+
"domains": [
|
|
1765
|
+
"contact"
|
|
1766
|
+
],
|
|
1767
|
+
"description": "Dutch landline phone number (area code prefix)",
|
|
1768
|
+
"examples": [
|
|
1769
|
+
"+31 20 123 4567",
|
|
1770
|
+
"020 1234567"
|
|
1771
|
+
]
|
|
1772
|
+
},
|
|
1773
|
+
{
|
|
1774
|
+
"id": "regex:nl:postal",
|
|
1775
|
+
"entityType": "ADDRESS",
|
|
1776
|
+
"pattern": "\\b\\d{4}\\s?[A-Z]{2}\\b",
|
|
1777
|
+
"flags": "g",
|
|
1778
|
+
"confidence": 0.8,
|
|
1779
|
+
"domains": [
|
|
1780
|
+
"contact"
|
|
1781
|
+
],
|
|
1782
|
+
"description": "Dutch postal code (4 digits + 2 letters)",
|
|
1783
|
+
"examples": [
|
|
1784
|
+
"1012 AB",
|
|
1785
|
+
"3511XA"
|
|
1786
|
+
]
|
|
1787
|
+
},
|
|
1788
|
+
{
|
|
1789
|
+
"id": "regex:nl:street",
|
|
1790
|
+
"entityType": "ADDRESS",
|
|
1791
|
+
"pattern": "[\\p{L}][\\p{L}\\s'-]*(?:straat|weg|laan|plein|gracht|kade|singel|dijk|steeg|dreef|hof|markt)\\s+\\d{1,5}[\\p{L}]?",
|
|
1792
|
+
"flags": "giu",
|
|
1793
|
+
"confidence": 0.85,
|
|
1794
|
+
"domains": [
|
|
1795
|
+
"contact"
|
|
1796
|
+
],
|
|
1797
|
+
"description": "Dutch street address (name + straat/weg/laan/gracht + number)",
|
|
1798
|
+
"examples": [
|
|
1799
|
+
"Keizersgracht 123",
|
|
1800
|
+
"Dorpsstraat 45a",
|
|
1801
|
+
"Marktplein 7"
|
|
1802
|
+
]
|
|
1803
|
+
},
|
|
1804
|
+
{
|
|
1805
|
+
"id": "regex:nl:company",
|
|
1806
|
+
"entityType": "COMPANY",
|
|
1807
|
+
"pattern": "[\\p{L}][\\p{L}\\s&.']+(?:\\s+)?(?:B\\.?V\\.?|N\\.?V\\.?|V\\.?O\\.?F\\.?|C\\.?V\\.?)\\b",
|
|
1808
|
+
"flags": "gu",
|
|
1809
|
+
"confidence": 0.9,
|
|
1810
|
+
"domains": [
|
|
1811
|
+
"legal",
|
|
1812
|
+
"financial"
|
|
1813
|
+
],
|
|
1814
|
+
"description": "Dutch company name with legal form (B.V., N.V., V.O.F., C.V.)",
|
|
1815
|
+
"examples": [
|
|
1816
|
+
"Philips N.V.",
|
|
1817
|
+
"Shell Nederland B.V."
|
|
1818
|
+
]
|
|
1819
|
+
}
|
|
1820
|
+
]
|
|
1821
|
+
},
|
|
1822
|
+
{
|
|
1823
|
+
"region": "be",
|
|
1824
|
+
"rules": [
|
|
1825
|
+
{
|
|
1826
|
+
"id": "regex:be:national_register",
|
|
1827
|
+
"entityType": "SSN",
|
|
1828
|
+
"pattern": "\\b\\d{2}[.\\s]?\\d{2}[.\\s]?\\d{2}[-.\\s]?\\d{3}[.\\s]?\\d{2}\\b",
|
|
1829
|
+
"flags": "g",
|
|
1830
|
+
"confidence": 0.9,
|
|
1831
|
+
"domains": [
|
|
1832
|
+
"identity",
|
|
1833
|
+
"hr"
|
|
1834
|
+
],
|
|
1835
|
+
"description": "Belgian National Register Number (Rijksregisternummer / Numéro de registre national)",
|
|
1836
|
+
"examples": [
|
|
1837
|
+
"85.07.15-123.97",
|
|
1838
|
+
"85071512397"
|
|
1839
|
+
],
|
|
1840
|
+
"validate": "belgianNrn"
|
|
1841
|
+
},
|
|
1842
|
+
{
|
|
1843
|
+
"id": "regex:be:phone",
|
|
1844
|
+
"entityType": "PHONE",
|
|
1845
|
+
"pattern": "\\b(?:\\+?32[\\s-]?|0)(?:4\\d{2}[\\s-]?\\d{2}[\\s-]?\\d{2}[\\s-]?\\d{2}|[1-9]\\d?[\\s-]?\\d{3}[\\s-]?\\d{2}[\\s-]?\\d{2})\\b",
|
|
1846
|
+
"flags": "g",
|
|
1847
|
+
"confidence": 0.8,
|
|
1848
|
+
"domains": [
|
|
1849
|
+
"contact"
|
|
1850
|
+
],
|
|
1851
|
+
"description": "Belgian phone number (mobile 04xx or landline)",
|
|
1852
|
+
"examples": [
|
|
1853
|
+
"+32 475 12 34 56",
|
|
1854
|
+
"02 123 45 67"
|
|
1855
|
+
]
|
|
1856
|
+
},
|
|
1857
|
+
{
|
|
1858
|
+
"id": "regex:be:postal",
|
|
1859
|
+
"entityType": "ADDRESS",
|
|
1860
|
+
"pattern": "\\b[1-9]\\d{3}\\s+[\\p{L}][\\p{L}\\s'-]+\\b",
|
|
1861
|
+
"flags": "gu",
|
|
1862
|
+
"confidence": 0.75,
|
|
1863
|
+
"domains": [
|
|
1864
|
+
"contact"
|
|
1865
|
+
],
|
|
1866
|
+
"description": "Belgian postal code (4 digits, 1000-9999) followed by city name",
|
|
1867
|
+
"examples": [
|
|
1868
|
+
"1000 Bruxelles",
|
|
1869
|
+
"2000 Antwerpen",
|
|
1870
|
+
"9000 Gent"
|
|
1871
|
+
],
|
|
1872
|
+
"falsePositiveNotes": "4-digit numbers are common"
|
|
1873
|
+
},
|
|
1874
|
+
{
|
|
1875
|
+
"id": "regex:be:street",
|
|
1876
|
+
"entityType": "ADDRESS",
|
|
1877
|
+
"pattern": "(?:straat|laan|weg|plein|steenweg|lei|dreef|boulevard|avenue|rue|place|chaussée)[\\p{L}\\s'-]+\\d{1,5}[\\p{L}]?|[\\p{L}][\\p{L}\\s'-]*(?:straat|laan|weg|plein|steenweg|lei|dreef)\\s+\\d{1,5}[\\p{L}]?",
|
|
1878
|
+
"flags": "giu",
|
|
1879
|
+
"confidence": 0.85,
|
|
1880
|
+
"domains": [
|
|
1881
|
+
"contact"
|
|
1882
|
+
],
|
|
1883
|
+
"description": "Belgian street address (Dutch/French street types + number)",
|
|
1884
|
+
"examples": [
|
|
1885
|
+
"Kerkstraat 12",
|
|
1886
|
+
"Avenue Louise 54",
|
|
1887
|
+
"Rue de la Loi 16"
|
|
1888
|
+
]
|
|
1889
|
+
}
|
|
1890
|
+
]
|
|
1891
|
+
},
|
|
1892
|
+
{
|
|
1893
|
+
"region": "at",
|
|
1894
|
+
"rules": [
|
|
1895
|
+
{
|
|
1896
|
+
"id": "regex:at:svnr",
|
|
1897
|
+
"entityType": "SSN",
|
|
1898
|
+
"pattern": "\\b[1-9]\\d{3}\\s?(?:0[1-9]|[12]\\d|3[01])(?:0[1-9]|1[0-2])\\d{2}\\b",
|
|
1899
|
+
"flags": "g",
|
|
1900
|
+
"confidence": 0.85,
|
|
1901
|
+
"domains": [
|
|
1902
|
+
"identity",
|
|
1903
|
+
"hr",
|
|
1904
|
+
"medical"
|
|
1905
|
+
],
|
|
1906
|
+
"description": "Austrian social insurance number (SVNR / Sozialversicherungsnummer, 10 digits)",
|
|
1907
|
+
"examples": [
|
|
1908
|
+
"1237 010180"
|
|
1909
|
+
],
|
|
1910
|
+
"validate": "svnr"
|
|
1911
|
+
},
|
|
1912
|
+
{
|
|
1913
|
+
"id": "regex:at:phone",
|
|
1914
|
+
"entityType": "PHONE",
|
|
1915
|
+
"pattern": "\\b(?:\\+?43[\\s-]?|0)\\d{1,4}[\\s-]?\\d{4,10}\\b",
|
|
1916
|
+
"flags": "g",
|
|
1917
|
+
"confidence": 0.75,
|
|
1918
|
+
"domains": [
|
|
1919
|
+
"contact"
|
|
1920
|
+
],
|
|
1921
|
+
"description": "Austrian phone number (variable-length area codes)",
|
|
1922
|
+
"examples": [
|
|
1923
|
+
"+43 1 12345678",
|
|
1924
|
+
"0664 1234567"
|
|
1925
|
+
]
|
|
1926
|
+
},
|
|
1927
|
+
{
|
|
1928
|
+
"id": "regex:at:postal",
|
|
1929
|
+
"entityType": "ADDRESS",
|
|
1930
|
+
"pattern": "\\b\\d{4}\\s+[\\p{L}][\\p{L}\\s-]+\\b",
|
|
1931
|
+
"flags": "gu",
|
|
1932
|
+
"confidence": 0.8,
|
|
1933
|
+
"domains": [
|
|
1934
|
+
"contact"
|
|
1935
|
+
],
|
|
1936
|
+
"description": "Austrian postal code (4 digits) followed by city name",
|
|
1937
|
+
"examples": [
|
|
1938
|
+
"1010 Wien",
|
|
1939
|
+
"5020 Salzburg",
|
|
1940
|
+
"8010 Graz"
|
|
1941
|
+
]
|
|
1942
|
+
},
|
|
1943
|
+
{
|
|
1944
|
+
"id": "regex:at:street",
|
|
1945
|
+
"entityType": "ADDRESS",
|
|
1946
|
+
"pattern": "[\\p{L}][\\p{L}\\s-]*(?:straße|strasse|str\\.|gasse|weg|platz|ring|allee)\\s+\\d+[\\p{L}]?(?:\\s*[/\\\\]\\s*\\d+)?",
|
|
1947
|
+
"flags": "giu",
|
|
1948
|
+
"confidence": 0.85,
|
|
1949
|
+
"domains": [
|
|
1950
|
+
"contact"
|
|
1951
|
+
],
|
|
1952
|
+
"description": "Austrian street address (name + Straße/Gasse/Weg/Platz + number)",
|
|
1953
|
+
"examples": [
|
|
1954
|
+
"Mariahilfer Straße 45",
|
|
1955
|
+
"Währinger Str. 12",
|
|
1956
|
+
"Hauptplatz 1",
|
|
1957
|
+
"Neubaugasse 7/3"
|
|
1958
|
+
]
|
|
1959
|
+
}
|
|
1960
|
+
]
|
|
1961
|
+
},
|
|
1962
|
+
{
|
|
1963
|
+
"region": "ch",
|
|
1964
|
+
"rules": [
|
|
1965
|
+
{
|
|
1966
|
+
"id": "regex:ch:ahv-avs-number",
|
|
1967
|
+
"entityType": "SSN",
|
|
1968
|
+
"pattern": "\\b756[.\\s]?\\d{4}[.\\s]?\\d{4}[.\\s]?\\d{2}\\b",
|
|
1969
|
+
"flags": "g",
|
|
1970
|
+
"confidence": 0.95,
|
|
1971
|
+
"domains": [
|
|
1972
|
+
"identity",
|
|
1973
|
+
"hr",
|
|
1974
|
+
"medical"
|
|
1975
|
+
],
|
|
1976
|
+
"description": "Swiss AHV/AVS social security number (new format, EAN-13 based)",
|
|
1977
|
+
"examples": [
|
|
1978
|
+
"756.1234.5678.97"
|
|
1979
|
+
],
|
|
1980
|
+
"validate": "ahv"
|
|
1981
|
+
},
|
|
1982
|
+
{
|
|
1983
|
+
"id": "regex:ch:phone",
|
|
1984
|
+
"entityType": "PHONE",
|
|
1985
|
+
"pattern": "\\b(?:\\+?41[\\s-]?|0)[1-9]\\d[\\s-]?\\d{3}[\\s-]?\\d{2}[\\s-]?\\d{2}\\b",
|
|
1986
|
+
"flags": "g",
|
|
1987
|
+
"confidence": 0.8,
|
|
1988
|
+
"domains": [
|
|
1989
|
+
"contact"
|
|
1990
|
+
],
|
|
1991
|
+
"description": "Swiss phone number"
|
|
1992
|
+
},
|
|
1993
|
+
{
|
|
1994
|
+
"id": "regex:ch:postal-city",
|
|
1995
|
+
"entityType": "ADDRESS",
|
|
1996
|
+
"pattern": "\\b\\d{4}\\s+[\\p{L}][\\p{L}\\s-]+\\b",
|
|
1997
|
+
"flags": "gu",
|
|
1998
|
+
"confidence": 0.8,
|
|
1999
|
+
"domains": [
|
|
2000
|
+
"contact"
|
|
2001
|
+
],
|
|
2002
|
+
"description": "Swiss postal code followed by city name"
|
|
2003
|
+
},
|
|
2004
|
+
{
|
|
2005
|
+
"id": "regex:ch:street-german",
|
|
2006
|
+
"entityType": "ADDRESS",
|
|
2007
|
+
"pattern": "[\\p{L}][\\p{L}\\s-]*(?:strasse|str\\.|weg|gasse|platz|allee|rain|matte)\\s+\\d+[\\p{L}]?",
|
|
2008
|
+
"flags": "giu",
|
|
2009
|
+
"confidence": 0.85,
|
|
2010
|
+
"domains": [
|
|
2011
|
+
"contact"
|
|
2012
|
+
],
|
|
2013
|
+
"description": "Swiss street address in German (e.g. Bahnhofstrasse 10)"
|
|
2014
|
+
},
|
|
2015
|
+
{
|
|
2016
|
+
"id": "regex:ch:street-french",
|
|
2017
|
+
"entityType": "ADDRESS",
|
|
2018
|
+
"pattern": "(?:rue|avenue|chemin|route|place|boulevard)\\s+[\\p{L}][\\p{L}\\s'-]+\\s*\\d+",
|
|
2019
|
+
"flags": "giu",
|
|
2020
|
+
"confidence": 0.85,
|
|
2021
|
+
"domains": [
|
|
2022
|
+
"contact"
|
|
2023
|
+
],
|
|
2024
|
+
"description": "Swiss street address in French (e.g. rue de Lausanne 12)"
|
|
2025
|
+
}
|
|
2026
|
+
]
|
|
2027
|
+
},
|
|
2028
|
+
{
|
|
2029
|
+
"region": "ie",
|
|
2030
|
+
"rules": [
|
|
2031
|
+
{
|
|
2032
|
+
"id": "regex:ie:pps-number",
|
|
2033
|
+
"entityType": "SSN",
|
|
2034
|
+
"pattern": "\\b\\d{7}[A-W][ABWTXZ]?\\b",
|
|
2035
|
+
"flags": "gi",
|
|
2036
|
+
"confidence": 0.9,
|
|
2037
|
+
"domains": [
|
|
2038
|
+
"identity",
|
|
2039
|
+
"hr"
|
|
2040
|
+
],
|
|
2041
|
+
"description": "Irish PPS (Personal Public Service) number",
|
|
2042
|
+
"examples": [
|
|
2043
|
+
"1234567T",
|
|
2044
|
+
"1234567TW"
|
|
2045
|
+
],
|
|
2046
|
+
"validate": "pps"
|
|
2047
|
+
},
|
|
2048
|
+
{
|
|
2049
|
+
"id": "regex:ie:phone",
|
|
2050
|
+
"entityType": "PHONE",
|
|
2051
|
+
"pattern": "\\b(?:\\+?353[\\s-]?|0)[1-9]\\d?[\\s-]?\\d{3}[\\s-]?\\d{3,4}\\b",
|
|
2052
|
+
"flags": "g",
|
|
2053
|
+
"confidence": 0.8,
|
|
2054
|
+
"domains": [
|
|
2055
|
+
"contact"
|
|
2056
|
+
],
|
|
2057
|
+
"description": "Irish phone number"
|
|
2058
|
+
},
|
|
2059
|
+
{
|
|
2060
|
+
"id": "regex:ie:eircode",
|
|
2061
|
+
"entityType": "ADDRESS",
|
|
2062
|
+
"pattern": "\\b[A-Z]\\d{2}\\s?[A-Z0-9]{4}\\b",
|
|
2063
|
+
"flags": "gi",
|
|
2064
|
+
"confidence": 0.8,
|
|
2065
|
+
"domains": [
|
|
2066
|
+
"contact"
|
|
2067
|
+
],
|
|
2068
|
+
"description": "Irish Eircode postal code",
|
|
2069
|
+
"examples": [
|
|
2070
|
+
"A65 F4E2",
|
|
2071
|
+
"D08YX4T"
|
|
2072
|
+
]
|
|
2073
|
+
}
|
|
2074
|
+
]
|
|
2075
|
+
},
|
|
2076
|
+
{
|
|
2077
|
+
"region": "dk",
|
|
2078
|
+
"rules": [
|
|
2079
|
+
{
|
|
2080
|
+
"id": "regex:dk:cpr-number",
|
|
2081
|
+
"entityType": "SSN",
|
|
2082
|
+
"pattern": "\\b(?:0[1-9]|[12]\\d|3[01])(?:0[1-9]|1[0-2])\\d{2}[-\\s]?\\d{4}\\b",
|
|
2083
|
+
"flags": "g",
|
|
2084
|
+
"confidence": 0.8,
|
|
2085
|
+
"domains": [
|
|
2086
|
+
"identity",
|
|
2087
|
+
"hr"
|
|
2088
|
+
],
|
|
2089
|
+
"description": "Danish CPR (Central Person Register) number",
|
|
2090
|
+
"examples": [
|
|
2091
|
+
"010190-1234"
|
|
2092
|
+
],
|
|
2093
|
+
"falsePositiveNotes": "Post-2007 CPR numbers may not satisfy modulo-11 check"
|
|
2094
|
+
},
|
|
2095
|
+
{
|
|
2096
|
+
"id": "regex:dk:phone",
|
|
2097
|
+
"entityType": "PHONE",
|
|
2098
|
+
"pattern": "\\b(?:\\+?45[\\s-]?)?\\d{2}[\\s-]?\\d{2}[\\s-]?\\d{2}[\\s-]?\\d{2}\\b",
|
|
2099
|
+
"flags": "g",
|
|
2100
|
+
"confidence": 0.75,
|
|
2101
|
+
"domains": [
|
|
2102
|
+
"contact"
|
|
2103
|
+
],
|
|
2104
|
+
"description": "Danish phone number"
|
|
2105
|
+
},
|
|
2106
|
+
{
|
|
2107
|
+
"id": "regex:dk:postal-city",
|
|
2108
|
+
"entityType": "ADDRESS",
|
|
2109
|
+
"pattern": "\\b\\d{4}\\s+[\\p{L}][\\p{L}\\s-]+\\b",
|
|
2110
|
+
"flags": "gu",
|
|
2111
|
+
"confidence": 0.8,
|
|
2112
|
+
"domains": [
|
|
2113
|
+
"contact"
|
|
2114
|
+
],
|
|
2115
|
+
"description": "Danish postal code followed by city name"
|
|
2116
|
+
}
|
|
2117
|
+
]
|
|
2118
|
+
},
|
|
2119
|
+
{
|
|
2120
|
+
"region": "fi",
|
|
2121
|
+
"rules": [
|
|
2122
|
+
{
|
|
2123
|
+
"id": "regex:fi:hetu",
|
|
2124
|
+
"entityType": "SSN",
|
|
2125
|
+
"pattern": "\\b(?:0[1-9]|[12]\\d|3[01])(?:0[1-9]|1[0-2])\\d{2}[ABCDEFYXWVU+-]\\d{3}[\\dA-FHJK-NPR-Y]\\b",
|
|
2126
|
+
"flags": "gi",
|
|
2127
|
+
"confidence": 0.9,
|
|
2128
|
+
"domains": [
|
|
2129
|
+
"identity",
|
|
2130
|
+
"hr"
|
|
2131
|
+
],
|
|
2132
|
+
"description": "Finnish personal identity code (henkilötunnus / HETU)",
|
|
2133
|
+
"examples": [
|
|
2134
|
+
"131052-308T"
|
|
2135
|
+
],
|
|
2136
|
+
"validate": "hetu"
|
|
2137
|
+
},
|
|
2138
|
+
{
|
|
2139
|
+
"id": "regex:fi:phone",
|
|
2140
|
+
"entityType": "PHONE",
|
|
2141
|
+
"pattern": "\\b(?:\\+?358[\\s-]?|0)[1-9]\\d?[\\s-]?\\d{3,4}[\\s-]?\\d{3,4}\\b",
|
|
2142
|
+
"flags": "g",
|
|
2143
|
+
"confidence": 0.8,
|
|
2144
|
+
"domains": [
|
|
2145
|
+
"contact"
|
|
2146
|
+
],
|
|
2147
|
+
"description": "Finnish phone number"
|
|
2148
|
+
},
|
|
2149
|
+
{
|
|
2150
|
+
"id": "regex:fi:postal-city",
|
|
2151
|
+
"entityType": "ADDRESS",
|
|
2152
|
+
"pattern": "\\b\\d{5}\\s+[\\p{L}][\\p{L}\\s-]+\\b",
|
|
2153
|
+
"flags": "gu",
|
|
2154
|
+
"confidence": 0.8,
|
|
2155
|
+
"domains": [
|
|
2156
|
+
"contact"
|
|
2157
|
+
],
|
|
2158
|
+
"description": "Finnish postal code followed by city name"
|
|
2159
|
+
}
|
|
2160
|
+
]
|
|
2161
|
+
},
|
|
2162
|
+
{
|
|
2163
|
+
"region": "us",
|
|
2164
|
+
"rules": [
|
|
2165
|
+
{
|
|
2166
|
+
"id": "regex:us:ssn",
|
|
2167
|
+
"entityType": "SSN",
|
|
2168
|
+
"pattern": "\\b(?!000|666|9\\d{2})[0-8]\\d{2}-(?!00)\\d{2}-(?!0000)\\d{4}\\b",
|
|
2169
|
+
"flags": "g",
|
|
2170
|
+
"confidence": 0.92,
|
|
2171
|
+
"domains": [
|
|
2172
|
+
"identity",
|
|
2173
|
+
"hr",
|
|
2174
|
+
"financial"
|
|
2175
|
+
],
|
|
2176
|
+
"description": "US Social Security Number (SSA-valid ranges, hyphenated)",
|
|
2177
|
+
"examples": [
|
|
2178
|
+
"123-45-6789",
|
|
2179
|
+
"078-05-1120"
|
|
2180
|
+
],
|
|
2181
|
+
"falsePositiveNotes": "Hyphenated form only — un-hyphenated SSNs are indistinguishable from other 9-digit IDs."
|
|
2182
|
+
},
|
|
2183
|
+
{
|
|
2184
|
+
"id": "regex:us:itin",
|
|
2185
|
+
"entityType": "SSN",
|
|
2186
|
+
"pattern": "\\b9\\d{2}-(?:5\\d|6[0-5]|7\\d|8[0-8]|9[0-24-9])-\\d{4}\\b",
|
|
2187
|
+
"flags": "g",
|
|
2188
|
+
"confidence": 0.85,
|
|
2189
|
+
"domains": [
|
|
2190
|
+
"identity",
|
|
2191
|
+
"financial"
|
|
2192
|
+
],
|
|
2193
|
+
"description": "US IRS Individual Taxpayer Identification Number (ITIN)",
|
|
2194
|
+
"examples": [
|
|
2195
|
+
"912-70-1234",
|
|
2196
|
+
"987-88-4321"
|
|
2197
|
+
]
|
|
2198
|
+
},
|
|
2199
|
+
{
|
|
2200
|
+
"id": "regex:us:ein",
|
|
2201
|
+
"entityType": "SSN",
|
|
2202
|
+
"pattern": "\\b(?:0[1-6]|1[0-6]|2[0-7]|[35]\\d|[468][0-8]|7[1-7]|9[0-58-9])-\\d{7}\\b",
|
|
2203
|
+
"flags": "g",
|
|
2204
|
+
"confidence": 0.8,
|
|
2205
|
+
"domains": [
|
|
2206
|
+
"financial",
|
|
2207
|
+
"legal"
|
|
2208
|
+
],
|
|
2209
|
+
"description": "US IRS Employer Identification Number (EIN)",
|
|
2210
|
+
"examples": [
|
|
2211
|
+
"12-3456789",
|
|
2212
|
+
"87-6543210"
|
|
2213
|
+
]
|
|
2214
|
+
},
|
|
2215
|
+
{
|
|
2216
|
+
"id": "regex:us:passport",
|
|
2217
|
+
"entityType": "SSN",
|
|
2218
|
+
"pattern": "\\b[A-Z]?\\d{8,9}\\b",
|
|
2219
|
+
"flags": "g",
|
|
2220
|
+
"confidence": 0.35,
|
|
2221
|
+
"domains": [
|
|
2222
|
+
"identity"
|
|
2223
|
+
],
|
|
2224
|
+
"description": "US passport number (9 alphanumerics)",
|
|
2225
|
+
"examples": [
|
|
2226
|
+
"123456789",
|
|
2227
|
+
"A12345678"
|
|
2228
|
+
],
|
|
2229
|
+
"falsePositiveNotes": "Very broad — best paired with the word \"passport\" in context."
|
|
2230
|
+
},
|
|
2231
|
+
{
|
|
2232
|
+
"id": "regex:us:mbi",
|
|
2233
|
+
"entityType": "SSN",
|
|
2234
|
+
"pattern": "\\b[1-9][A-HJ-NP-Z][A-HJ-NP-Z0-9]\\d-?[A-HJ-NP-Z][A-HJ-NP-Z0-9]\\d-?[A-HJ-NP-Z]{2}\\d{2}\\b",
|
|
2235
|
+
"flags": "g",
|
|
2236
|
+
"confidence": 0.95,
|
|
2237
|
+
"domains": [
|
|
2238
|
+
"medical",
|
|
2239
|
+
"identity"
|
|
2240
|
+
],
|
|
2241
|
+
"description": "Medicare Beneficiary Identifier (MBI, replaces SSN-based HICN)",
|
|
2242
|
+
"examples": [
|
|
2243
|
+
"1EG4-TE5-MK73",
|
|
2244
|
+
"1AB2CD3EF45"
|
|
2245
|
+
]
|
|
2246
|
+
},
|
|
2247
|
+
{
|
|
2248
|
+
"id": "regex:us:dea",
|
|
2249
|
+
"entityType": "SSN",
|
|
2250
|
+
"pattern": "\\b[ABCDEFGHJKLMPRSTUX][A-Z]\\d{7}\\b",
|
|
2251
|
+
"flags": "g",
|
|
2252
|
+
"confidence": 0.92,
|
|
2253
|
+
"domains": [
|
|
2254
|
+
"medical"
|
|
2255
|
+
],
|
|
2256
|
+
"description": "US DEA registration number (prescriber identifier, with checksum)",
|
|
2257
|
+
"examples": [
|
|
2258
|
+
"BJ1234563",
|
|
2259
|
+
"AS9876547"
|
|
2260
|
+
],
|
|
2261
|
+
"validate": "dea"
|
|
2262
|
+
},
|
|
2263
|
+
{
|
|
2264
|
+
"id": "regex:us:npi",
|
|
2265
|
+
"entityType": "SSN",
|
|
2266
|
+
"pattern": "\\b\\d{10}\\b",
|
|
2267
|
+
"flags": "g",
|
|
2268
|
+
"confidence": 0.9,
|
|
2269
|
+
"domains": [
|
|
2270
|
+
"medical"
|
|
2271
|
+
],
|
|
2272
|
+
"description": "US National Provider Identifier (NPI, Luhn-validated with 80840 prefix)",
|
|
2273
|
+
"examples": [
|
|
2274
|
+
"1234567893"
|
|
2275
|
+
],
|
|
2276
|
+
"falsePositiveNotes": "Raw 10 digits is broad — Luhn check makes the false-positive rate negligible.",
|
|
2277
|
+
"validate": "npi"
|
|
2278
|
+
},
|
|
2279
|
+
{
|
|
2280
|
+
"id": "regex:us:routing",
|
|
2281
|
+
"entityType": "OTHER",
|
|
2282
|
+
"pattern": "\\b(?:0\\d|1[0-2]|2[1-9]|3[0-2]|6[1-9]|7[0-2]|80)\\d{7}\\b",
|
|
2283
|
+
"flags": "g",
|
|
2284
|
+
"confidence": 0.9,
|
|
2285
|
+
"domains": [
|
|
2286
|
+
"financial"
|
|
2287
|
+
],
|
|
2288
|
+
"description": "US ABA bank routing number (9 digits, valid prefix + mod-10 checksum)",
|
|
2289
|
+
"examples": [
|
|
2290
|
+
"021000021",
|
|
2291
|
+
"011000015"
|
|
2292
|
+
],
|
|
2293
|
+
"validate": "aba"
|
|
2294
|
+
},
|
|
2295
|
+
{
|
|
2296
|
+
"id": "regex:us:phone",
|
|
2297
|
+
"entityType": "PHONE",
|
|
2298
|
+
"pattern": "(?:\\+1[-.\\s]?)?(?:\\(([2-9]\\d{2})\\)[-.\\s]?|([2-9]\\d{2})[-.\\s])([2-9]\\d{2})[-.\\s](\\d{4})\\b",
|
|
2299
|
+
"flags": "g",
|
|
2300
|
+
"confidence": 0.85,
|
|
2301
|
+
"domains": [
|
|
2302
|
+
"contact"
|
|
2303
|
+
],
|
|
2304
|
+
"description": "US/NANP phone number (e.g., (555) 555-1234, 555-555-1234, +1 555.555.1234)",
|
|
2305
|
+
"examples": [
|
|
2306
|
+
"(415) 555-2671",
|
|
2307
|
+
"415-555-2671",
|
|
2308
|
+
"+1 415 555 2671",
|
|
2309
|
+
"415.555.2671"
|
|
2310
|
+
],
|
|
2311
|
+
"falsePositiveNotes": "Bare 10-digit runs are excluded to avoid colliding with SSN/account numbers."
|
|
2312
|
+
},
|
|
2313
|
+
{
|
|
2314
|
+
"id": "regex:us:zip_plus4",
|
|
2315
|
+
"entityType": "ADDRESS",
|
|
2316
|
+
"pattern": "\\b\\d{5}-\\d{4}\\b",
|
|
2317
|
+
"flags": "g",
|
|
2318
|
+
"confidence": 0.8,
|
|
2319
|
+
"domains": [
|
|
2320
|
+
"contact"
|
|
2321
|
+
],
|
|
2322
|
+
"description": "US ZIP+4 postal code",
|
|
2323
|
+
"examples": [
|
|
2324
|
+
"94103-1741",
|
|
2325
|
+
"10001-2345"
|
|
2326
|
+
]
|
|
2327
|
+
},
|
|
2328
|
+
{
|
|
2329
|
+
"id": "regex:us:street",
|
|
2330
|
+
"entityType": "ADDRESS",
|
|
2331
|
+
"pattern": "\\b\\d{1,5}[A-Z]?\\s+(?:[NSEW]\\.?\\s+|North\\s+|South\\s+|East\\s+|West\\s+)?(?:\\d{1,4}(?:st|nd|rd|th)|[A-Z]\\w*)(?:\\s+(?:\\d{1,4}(?:st|nd|rd|th)|[A-Z]\\w*))*\\s+(?:Street|St|Road|Rd|Avenue|Ave|Boulevard|Blvd|Lane|Ln|Drive|Dr|Court|Ct|Circle|Cir|Place|Pl|Square|Sq|Terrace|Ter|Trail|Trl|Parkway|Pkwy|Highway|Hwy|Way|Plaza|Plz|Loop|Alley|Aly|Crossing|Xing|Expressway|Expy|Freeway|Fwy)\\b\\.?",
|
|
2332
|
+
"flags": "gi",
|
|
2333
|
+
"confidence": 0.85,
|
|
2334
|
+
"domains": [
|
|
2335
|
+
"contact"
|
|
2336
|
+
],
|
|
2337
|
+
"description": "US street address (number + name + USPS suffix)",
|
|
2338
|
+
"examples": [
|
|
2339
|
+
"1600 Pennsylvania Ave",
|
|
2340
|
+
"350 5th Avenue",
|
|
2341
|
+
"1 Infinite Loop",
|
|
2342
|
+
"742 Evergreen Terrace"
|
|
2343
|
+
]
|
|
2344
|
+
},
|
|
2345
|
+
{
|
|
2346
|
+
"id": "regex:us:currency_words",
|
|
2347
|
+
"entityType": "CURRENCY",
|
|
2348
|
+
"pattern": "(?:in\\s+(?:the\\s+)?(?:amount|sum)\\s+of|pay(?:able)?(?:\\s+the\\s+(?:amount|sum))?\\s+of)\\s+[\\p{L}\\s-]+(?:dollars?|cents?)\\b",
|
|
2349
|
+
"flags": "giu",
|
|
2350
|
+
"confidence": 0.9,
|
|
2351
|
+
"domains": [
|
|
2352
|
+
"financial"
|
|
2353
|
+
],
|
|
2354
|
+
"description": "US dollar amount written in words (e.g., \"in the amount of eight thousand five hundred dollars\")",
|
|
2355
|
+
"examples": [
|
|
2356
|
+
"in the amount of five thousand dollars",
|
|
2357
|
+
"payable the sum of two hundred fifty dollars"
|
|
2358
|
+
]
|
|
2359
|
+
},
|
|
2360
|
+
{
|
|
2361
|
+
"id": "regex:us:company",
|
|
2362
|
+
"entityType": "COMPANY",
|
|
2363
|
+
"pattern": "[\\p{L}][\\p{L}\\s&.']+(?:,?\\s+)?(?:Inc\\.?|LLC|L\\.L\\.C\\.|Corp\\.?|Corporation|Co\\.|Company|Ltd\\.?|LP|L\\.P\\.|LLP|L\\.L\\.P\\.|PLLC|P\\.C\\.)\\b",
|
|
2364
|
+
"flags": "gu",
|
|
2365
|
+
"confidence": 0.85,
|
|
2366
|
+
"domains": [
|
|
2367
|
+
"legal",
|
|
2368
|
+
"financial"
|
|
2369
|
+
],
|
|
2370
|
+
"description": "US company name with legal suffix (Inc, LLC, Corp, etc.)",
|
|
2371
|
+
"examples": [
|
|
2372
|
+
"Apple Inc.",
|
|
2373
|
+
"Acme LLC",
|
|
2374
|
+
"Stark Industries Corp",
|
|
2375
|
+
"Wayne Enterprises, Inc."
|
|
2376
|
+
]
|
|
2377
|
+
}
|
|
2378
|
+
]
|
|
2379
|
+
},
|
|
2380
|
+
{
|
|
2381
|
+
"region": "jp",
|
|
2382
|
+
"rules": [
|
|
2383
|
+
{
|
|
2384
|
+
"id": "regex:jp:my_number",
|
|
2385
|
+
"entityType": "SSN",
|
|
2386
|
+
"pattern": "\\b\\d{4}\\s?\\d{4}\\s?\\d{4}\\b",
|
|
2387
|
+
"flags": "g",
|
|
2388
|
+
"confidence": 0.7,
|
|
2389
|
+
"domains": [
|
|
2390
|
+
"identity"
|
|
2391
|
+
],
|
|
2392
|
+
"description": "Japanese My Number (individual number, 12 digits)",
|
|
2393
|
+
"examples": [
|
|
2394
|
+
"1234 5678 9012"
|
|
2395
|
+
]
|
|
2396
|
+
},
|
|
2397
|
+
{
|
|
2398
|
+
"id": "regex:jp:passport",
|
|
2399
|
+
"entityType": "SSN",
|
|
2400
|
+
"pattern": "\\b[A-Z]{2}\\d{7}\\b",
|
|
2401
|
+
"flags": "g",
|
|
2402
|
+
"confidence": 0.7,
|
|
2403
|
+
"domains": [
|
|
2404
|
+
"identity"
|
|
2405
|
+
],
|
|
2406
|
+
"description": "Japanese passport number (2 letters + 7 digits)",
|
|
2407
|
+
"examples": [
|
|
2408
|
+
"TK1234567"
|
|
2409
|
+
]
|
|
2410
|
+
},
|
|
2411
|
+
{
|
|
2412
|
+
"id": "regex:jp:corporate_number",
|
|
2413
|
+
"entityType": "SSN",
|
|
2414
|
+
"pattern": "\\b\\d{13}\\b",
|
|
2415
|
+
"flags": "g",
|
|
2416
|
+
"confidence": 0.5,
|
|
2417
|
+
"domains": [
|
|
2418
|
+
"identity",
|
|
2419
|
+
"financial"
|
|
2420
|
+
],
|
|
2421
|
+
"description": "Japanese corporate number (houjin bangou, 13 digits)",
|
|
2422
|
+
"examples": [
|
|
2423
|
+
"1234567890123"
|
|
2424
|
+
]
|
|
2425
|
+
},
|
|
2426
|
+
{
|
|
2427
|
+
"id": "regex:jp:phone",
|
|
2428
|
+
"entityType": "PHONE",
|
|
2429
|
+
"pattern": "\\b0\\d{1,4}[\\s-]?\\d{1,4}[\\s-]?\\d{3,4}\\b",
|
|
2430
|
+
"flags": "g",
|
|
2431
|
+
"confidence": 0.8,
|
|
2432
|
+
"domains": [
|
|
2433
|
+
"contact"
|
|
2434
|
+
],
|
|
2435
|
+
"description": "Japanese phone number (0X-XXXX-XXXX, variable area code length)",
|
|
2436
|
+
"examples": [
|
|
2437
|
+
"03-1234-5678",
|
|
2438
|
+
"090-1234-5678",
|
|
2439
|
+
"0120-123-456"
|
|
2440
|
+
]
|
|
2441
|
+
},
|
|
2442
|
+
{
|
|
2443
|
+
"id": "regex:jp:postal",
|
|
2444
|
+
"entityType": "ADDRESS",
|
|
2445
|
+
"pattern": "\\b\\d{3}-?\\d{4}\\b",
|
|
2446
|
+
"flags": "g",
|
|
2447
|
+
"confidence": 0.65,
|
|
2448
|
+
"domains": [
|
|
2449
|
+
"contact"
|
|
2450
|
+
],
|
|
2451
|
+
"description": "Japanese postal code (XXX-XXXX)",
|
|
2452
|
+
"examples": [
|
|
2453
|
+
"100-0001",
|
|
2454
|
+
"1600023"
|
|
2455
|
+
]
|
|
2456
|
+
},
|
|
2457
|
+
{
|
|
2458
|
+
"id": "regex:jp:currency_kanji",
|
|
2459
|
+
"entityType": "CURRENCY",
|
|
2460
|
+
"pattern": "[一二三四五六七八九十百千万億兆]+\\s*円",
|
|
2461
|
+
"flags": "g",
|
|
2462
|
+
"confidence": 0.9,
|
|
2463
|
+
"domains": [
|
|
2464
|
+
"financial"
|
|
2465
|
+
],
|
|
2466
|
+
"description": "Japanese amount in kanji numerals + yen sign (e.g., 八千五百円)",
|
|
2467
|
+
"examples": [
|
|
2468
|
+
"八千五百円"
|
|
2469
|
+
]
|
|
2470
|
+
},
|
|
2471
|
+
{
|
|
2472
|
+
"id": "regex:jp:address",
|
|
2473
|
+
"entityType": "ADDRESS",
|
|
2474
|
+
"pattern": "[\\u4E00-\\u9FFF]+[都道府県][\\u4E00-\\u9FFF]+[市区町村郡][\\u4E00-\\u9FFF\\d-]+",
|
|
2475
|
+
"flags": "g",
|
|
2476
|
+
"confidence": 0.85,
|
|
2477
|
+
"domains": [
|
|
2478
|
+
"contact"
|
|
2479
|
+
],
|
|
2480
|
+
"description": "Japanese address (prefecture + city/ward + district)",
|
|
2481
|
+
"examples": [
|
|
2482
|
+
"東京都千代田区丸の内1-1-1"
|
|
2483
|
+
]
|
|
2484
|
+
},
|
|
2485
|
+
{
|
|
2486
|
+
"id": "regex:jp:company_prefix",
|
|
2487
|
+
"entityType": "COMPANY",
|
|
2488
|
+
"pattern": "(?:株式会社|有限会社|合同会社|合名会社|合資会社)\\s*[\\u4E00-\\u9FFF\\p{L}\\s]+",
|
|
2489
|
+
"flags": "gu",
|
|
2490
|
+
"confidence": 0.9,
|
|
2491
|
+
"domains": [
|
|
2492
|
+
"general"
|
|
2493
|
+
],
|
|
2494
|
+
"description": "Japanese company with legal prefix (kabushiki gaisha etc.)",
|
|
2495
|
+
"examples": [
|
|
2496
|
+
"株式会社トヨタ自動車",
|
|
2497
|
+
"有限会社田中商店"
|
|
2498
|
+
]
|
|
2499
|
+
},
|
|
2500
|
+
{
|
|
2501
|
+
"id": "regex:jp:company_suffix",
|
|
2502
|
+
"entityType": "COMPANY",
|
|
2503
|
+
"pattern": "[\\u4E00-\\u9FFF\\p{L}][\\u4E00-\\u9FFF\\p{L}\\s]+(?:株式会社|有限会社|合同会社)",
|
|
2504
|
+
"flags": "gu",
|
|
2505
|
+
"confidence": 0.9,
|
|
2506
|
+
"domains": [
|
|
2507
|
+
"general"
|
|
2508
|
+
],
|
|
2509
|
+
"description": "Japanese company with legal suffix (name + kabushiki gaisha)",
|
|
2510
|
+
"examples": [
|
|
2511
|
+
"トヨタ自動車株式会社"
|
|
2512
|
+
]
|
|
2513
|
+
}
|
|
2514
|
+
]
|
|
2515
|
+
},
|
|
2516
|
+
{
|
|
2517
|
+
"region": "cn",
|
|
2518
|
+
"rules": [
|
|
2519
|
+
{
|
|
2520
|
+
"id": "regex:cn:resident_id",
|
|
2521
|
+
"entityType": "SSN",
|
|
2522
|
+
"pattern": "\\b\\d{6}(?:19|20)\\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]\\b",
|
|
2523
|
+
"flags": "g",
|
|
2524
|
+
"confidence": 0.9,
|
|
2525
|
+
"domains": [
|
|
2526
|
+
"identity"
|
|
2527
|
+
],
|
|
2528
|
+
"description": "Chinese Resident Identity Card number (18 digits)",
|
|
2529
|
+
"examples": [
|
|
2530
|
+
"110101199003070003"
|
|
2531
|
+
]
|
|
2532
|
+
},
|
|
2533
|
+
{
|
|
2534
|
+
"id": "regex:cn:passport",
|
|
2535
|
+
"entityType": "SSN",
|
|
2536
|
+
"pattern": "\\b[GDE]\\d{8}\\b",
|
|
2537
|
+
"flags": "g",
|
|
2538
|
+
"confidence": 0.75,
|
|
2539
|
+
"domains": [
|
|
2540
|
+
"identity"
|
|
2541
|
+
],
|
|
2542
|
+
"description": "Chinese passport number (G/D/E + 8 digits)",
|
|
2543
|
+
"examples": [
|
|
2544
|
+
"G12345678",
|
|
2545
|
+
"E00000001"
|
|
2546
|
+
]
|
|
2547
|
+
},
|
|
2548
|
+
{
|
|
2549
|
+
"id": "regex:cn:bank_card",
|
|
2550
|
+
"entityType": "OTHER",
|
|
2551
|
+
"pattern": "\\b\\d{15,19}\\b",
|
|
2552
|
+
"flags": "g",
|
|
2553
|
+
"confidence": 0.4,
|
|
2554
|
+
"domains": [
|
|
2555
|
+
"financial"
|
|
2556
|
+
],
|
|
2557
|
+
"description": "Chinese bank card number (15-19 digits)",
|
|
2558
|
+
"examples": [
|
|
2559
|
+
"6222021234567890123"
|
|
2560
|
+
],
|
|
2561
|
+
"falsePositiveNotes": "Any 15-19 digit run matches; low confidence by design"
|
|
2562
|
+
},
|
|
2563
|
+
{
|
|
2564
|
+
"id": "regex:cn:uscc",
|
|
2565
|
+
"entityType": "SSN",
|
|
2566
|
+
"pattern": "\\b[0-9A-Z]{18}\\b",
|
|
2567
|
+
"flags": "g",
|
|
2568
|
+
"confidence": 0.6,
|
|
2569
|
+
"domains": [
|
|
2570
|
+
"identity",
|
|
2571
|
+
"financial"
|
|
2572
|
+
],
|
|
2573
|
+
"description": "Chinese Unified Social Credit Code (18 alphanumeric)",
|
|
2574
|
+
"examples": [
|
|
2575
|
+
"91110000710921000K"
|
|
2576
|
+
]
|
|
2577
|
+
},
|
|
2578
|
+
{
|
|
2579
|
+
"id": "regex:cn:phone_mobile",
|
|
2580
|
+
"entityType": "PHONE",
|
|
2581
|
+
"pattern": "\\b(?:\\+?86[\\s-]?)?1[3-9]\\d[\\s-]?\\d{4}[\\s-]?\\d{4}\\b",
|
|
2582
|
+
"flags": "g",
|
|
2583
|
+
"confidence": 0.85,
|
|
2584
|
+
"domains": [
|
|
2585
|
+
"contact"
|
|
2586
|
+
],
|
|
2587
|
+
"description": "Chinese mobile phone number (1XX-XXXX-XXXX, optionally with +86)",
|
|
2588
|
+
"examples": [
|
|
2589
|
+
"+86 138 1234 5678",
|
|
2590
|
+
"13812345678"
|
|
2591
|
+
]
|
|
2592
|
+
},
|
|
2593
|
+
{
|
|
2594
|
+
"id": "regex:cn:phone_landline",
|
|
2595
|
+
"entityType": "PHONE",
|
|
2596
|
+
"pattern": "\\b0\\d{2,3}[\\s-]?\\d{7,8}\\b",
|
|
2597
|
+
"flags": "g",
|
|
2598
|
+
"confidence": 0.8,
|
|
2599
|
+
"domains": [
|
|
2600
|
+
"contact"
|
|
2601
|
+
],
|
|
2602
|
+
"description": "Chinese landline phone number (0XX-XXXXXXXX)",
|
|
2603
|
+
"examples": [
|
|
2604
|
+
"010-12345678",
|
|
2605
|
+
"021-87654321"
|
|
2606
|
+
]
|
|
2607
|
+
},
|
|
2608
|
+
{
|
|
2609
|
+
"id": "regex:cn:postal",
|
|
2610
|
+
"entityType": "ADDRESS",
|
|
2611
|
+
"pattern": "\\b\\d{6}\\b",
|
|
2612
|
+
"flags": "g",
|
|
2613
|
+
"confidence": 0.35,
|
|
2614
|
+
"domains": [
|
|
2615
|
+
"contact"
|
|
2616
|
+
],
|
|
2617
|
+
"description": "Chinese postal code (6 digits)",
|
|
2618
|
+
"examples": [
|
|
2619
|
+
"100000",
|
|
2620
|
+
"200000"
|
|
2621
|
+
],
|
|
2622
|
+
"falsePositiveNotes": "Any standalone 6-digit number matches; low confidence by design"
|
|
2623
|
+
},
|
|
2624
|
+
{
|
|
2625
|
+
"id": "regex:cn:currency_hanzi",
|
|
2626
|
+
"entityType": "CURRENCY",
|
|
2627
|
+
"pattern": "[零壹贰叁肆伍陆柒捌玖拾佰仟萬億一二三四五六七八九十百千万亿]+\\s*(?:元|圆|块)",
|
|
2628
|
+
"flags": "g",
|
|
2629
|
+
"confidence": 0.9,
|
|
2630
|
+
"domains": [
|
|
2631
|
+
"financial"
|
|
2632
|
+
],
|
|
2633
|
+
"description": "Chinese amount in hanzi numerals + yuan sign (e.g., 捌仟伍佰元)",
|
|
2634
|
+
"examples": [
|
|
2635
|
+
"捌仟伍佰元",
|
|
2636
|
+
"八千五百元"
|
|
2637
|
+
]
|
|
2638
|
+
},
|
|
2639
|
+
{
|
|
2640
|
+
"id": "regex:cn:address",
|
|
2641
|
+
"entityType": "ADDRESS",
|
|
2642
|
+
"pattern": "[\\u4E00-\\u9FFF]+[省市][\\u4E00-\\u9FFF]+[市区县][\\u4E00-\\u9FFF\\d-]+",
|
|
2643
|
+
"flags": "g",
|
|
2644
|
+
"confidence": 0.85,
|
|
2645
|
+
"domains": [
|
|
2646
|
+
"contact"
|
|
2647
|
+
],
|
|
2648
|
+
"description": "Chinese address (province/city + district + street)",
|
|
2649
|
+
"examples": [
|
|
2650
|
+
"北京市朝阳区建国路1号"
|
|
2651
|
+
]
|
|
2652
|
+
},
|
|
2653
|
+
{
|
|
2654
|
+
"id": "regex:cn:company",
|
|
2655
|
+
"entityType": "COMPANY",
|
|
2656
|
+
"pattern": "[\\u4E00-\\u9FFF][\\u4E00-\\u9FFF\\s]+(?:有限公司|股份有限公司|集团|有限责任公司)",
|
|
2657
|
+
"flags": "g",
|
|
2658
|
+
"confidence": 0.9,
|
|
2659
|
+
"domains": [
|
|
2660
|
+
"general"
|
|
2661
|
+
],
|
|
2662
|
+
"description": "Chinese company name with legal form",
|
|
2663
|
+
"examples": [
|
|
2664
|
+
"阿里巴巴集团",
|
|
2665
|
+
"华为技术有限公司",
|
|
2666
|
+
"腾讯科技股份有限公司"
|
|
2667
|
+
]
|
|
2668
|
+
}
|
|
2669
|
+
]
|
|
2670
|
+
}
|
|
2671
|
+
];
|