1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This file contains UTF8 strings that we want as char arrays. To avoid
6 // different compilers, we use a script to convert the UTF8 strings into
7 // numeric literals (\x##).
9 #include "components/autofill/core/browser/autofill_regex_constants.h"
13 /////////////////////////////////////////////////////////////////////////////
15 /////////////////////////////////////////////////////////////////////////////
16 const char kAttentionIgnoredRe[] = "attention|attn";
17 const char kRegionIgnoredRe[] =
18 "province|region|other"
20 "|bairro|suburb"; // pt-BR, pt-PT
21 const char kCompanyRe[] =
22 "company|business|organization|organisation"
23 "|firma|firmenname" // de-DE
25 "|societe|société" // fr-FR
26 "|ragione.?sociale" // it-IT
28 "|название.?компании" // ru
31 const char kAddressLine1Re[] =
32 "address.*line|address1|addr1|street"
33 "|strasse|straße|hausnummer|housenumber" // de-DE
34 "|house.?name" // en-GB
35 "|direccion|dirección" // es
39 "|morada|endereço" // pt-BR, pt-PT
43 const char kAddressLine1LabelRe[] =
50 const char kAddressLine2Re[] =
51 "address.*line2|address2|addr2|street|suite|unit"
52 "|adresszusatz|ergänzende.?angaben" // de-DE
53 "|direccion2|colonia|adicional" // es
54 "|addresssuppl|complementnom|appartement" // fr-FR
55 "|indirizzo2" // it-IT
57 "|complemento|addrcomplement" // pt-BR, pt-PT
61 const char kAddressLine2LabelRe[] =
67 const char kAddressLinesExtraRe[] =
68 "address.*line[3-9]|address[3-9]|addr[3-9]|street|line[3-9]"
70 "|batiment|residence" // fr-FR
71 "|indirizzo[3-9]"; // it-IT
72 const char kCountryRe[] =
73 "country|countries|location"
78 const char kZipCodeRe[] =
79 "zip|postal|post.*code|pcode|^1z$"
81 "|postleitzahl" // de-DE
86 "|codigo|codpos|\\bcep\\b" // pt-BR, pt-PT
87 "|Почтовый.?Индекс" // ru
91 const char kZip4Re[] =
93 "|codpos2"; // pt-BR, pt-PT
94 const char kCityRe[] =
96 "|\\bort\\b|stadt" // de-DE
98 "|ciudad|provincia|localidad|poblacion" // es
99 "|ville|commune" // fr-FR
102 "|cidade" // pt-BR, pt-PT
106 "|^시[^도·・]|시[·・]?군[·・]?구"; // ko-KR
107 const char kStateRe[] =
108 "(?<!united )state|county|region|province"
110 "|county|principality" // en-UK
112 "|estado|provincia" // pt-BR, pt-PT
116 "|^시[·・]?도"; // ko-KR
117 const char kAddressTypeSameAsRe[] = "same as";
118 const char kAddressTypeUseMyRe[] = "use my";
119 const char kBillingDesignatorRe[] = "bill";
120 const char kShippingDesignatorRe[] = "ship";
122 /////////////////////////////////////////////////////////////////////////////
123 // credit_card_field.cc
124 /////////////////////////////////////////////////////////////////////////////
125 const char kNameOnCardRe[] =
126 "card.?holder|name.*\\bon\\b.*card|cc.?name|cc.?full.?name|owner"
127 "|karteninhaber" // de-DE
128 "|nombre.*tarjeta" // es
129 "|nom.*carte" // fr-FR
130 "|nome.*cart" // it-IT
133 "|信用卡开户名|开户名|持卡人姓名" // zh-CN
135 const char kNameOnCardContextualRe[] =
137 const char kCardNumberRe[] =
138 "card.?number|card.?#|card.?no|cc.?num|acct.?num"
140 "|credito|numero|número" // es
143 "|Номер.*карты" // ru
144 "|信用卡号|信用卡号码" // zh-CN
147 const char kCardCvcRe[] =
148 "verification|card identification|security code|cvn|cvv|cvc|csc|\\bcid\\b";
149 const char kCardTypeRe[] =
150 "card.?type|cc.?type|payment.?method";
152 // "Expiration date" is the most common label here, but some pages have
153 // "Expires", "exp. date" or "exp. month" and "exp. year". We also look
154 // for the field names ccmonth and ccyear, which appear on at least 4 of
157 // On at least one page (The China Shop2.html) we find only the labels
158 // "month" and "year". So for now we match these words directly; we'll
159 // see if this turns out to be too general.
161 // Toolbar Bug 51451: indeed, simply matching "month" is too general for
162 // https://rps.fidelity.com/ftgw/rps/RtlCust/CreatePIN/Init.
163 // Instead, we match only words beginning with "month".
164 const char kExpirationMonthRe[] =
165 "expir|exp.*mo|exp.*date|ccmonth|cardmonth"
166 "|gueltig|gültig|monat" // de-DE
168 "|date.*exp" // fr-FR
171 "|validade" // pt-BR, pt-PT
172 "|Срок действия карты" // ru
174 const char kExpirationYearRe[] =
176 "|ablaufdatum|gueltig|gültig|yahr" // de-DE
180 "|validade" // pt-BR, pt-PT
181 "|Срок действия карты" // ru
184 // This regex is a little bit nasty, but it is simply requiring exactly two
186 const char kExpirationDate2DigitYearRe[] =
187 "exp.*date.*[^y]yy([^y]|$)";
188 const char kExpirationDateRe[] =
190 "|gueltig|gültig" // de-DE
192 "|date.*exp" // fr-FR
195 "|validade" // pt-BR, pt-PT
196 "|Срок действия карты"; // ru
197 const char kCardIgnoredRe[] =
199 const char kGiftCardRe[] =
203 /////////////////////////////////////////////////////////////////////////////
205 /////////////////////////////////////////////////////////////////////////////
206 const char kEmailRe[] =
210 "|Электронной.?Почты" // ru
213 "|(이메일|전자.?우편|[Ee]-?mail)(.?주소)?"; // ko-KR
216 /////////////////////////////////////////////////////////////////////////////
218 /////////////////////////////////////////////////////////////////////////////
219 const char kNameIgnoredRe[] =
220 "user.?name|user.?id|nickname|maiden name|title|prefix|suffix"
221 "|vollständiger.?name" // de-DE
223 "|(사용자.?)?아이디|사용자.?ID"; // ko-KR
224 const char kNameRe[] =
225 "^name|full.?name|your.?name|customer.?name|firstandlastname|bill.?name"
227 "|nombre.*y.*apellidos" // es
230 "|^nome" // pt-BR, pt-PT
233 const char kNameSpecificRe[] =
236 "|^nome"; // pt-BR, pt-PT
237 const char kFirstNameRe[] =
238 "first.*name|initials|fname|first$"
241 "|forename|prénom|prenom" // fr-FR
243 "|nome" // pt-BR, pt-PT
246 const char kMiddleInitialRe[] = "middle.*initial|m\\.i\\.|mi$|\\bmi\\b";
247 const char kMiddleNameRe[] =
248 "middle.*name|mname|middle$"
249 "|apellido.?materno|lastlastname"; // es
250 const char kLastNameRe[] =
251 "last.*name|lname|surname|last$|secondname"
254 "|famille|^nom" // fr-FR
257 "|morada|apelidos|surename|sobrenome" // pt-BR, pt-PT
261 /////////////////////////////////////////////////////////////////////////////
263 /////////////////////////////////////////////////////////////////////////////
264 const char kPhoneRe[] =
266 "|telefonnummer" // de-DE
267 "|telefono|teléfono" // es
270 "|telefone|telemovel" // pt-BR, pt-PT
273 "|(전화|핸드폰|휴대폰|휴대전화)(.?번호)?"; // ko-KR
274 const char kCountryCodeRe[] =
275 "country.*code|ccode|_cc";
276 const char kAreaCodeNotextRe[] =
278 const char kAreaCodeRe[] =
279 "area.*code|acode|area"
281 const char kPhonePrefixSeparatorRe[] =
283 const char kPhoneSuffixSeparatorRe[] =
285 const char kPhonePrefixRe[] =
287 "|preselection" // fr-FR
288 "|ddd"; // pt-BR, pt-PT
289 const char kPhoneSuffixRe[] =
291 const char kPhoneExtensionRe[] =
292 "\\bext|ext\\b|extension"
293 "|ramal"; // pt-BR, pt-PT
295 } // namespace autofill