OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file contains UTF8 strings that we want as char arrays. To avoid | 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 | 6 // different compilers, we use a script to convert the UTF8 strings into |
7 // numeric literals (\x##). | 7 // numeric literals (\x##). |
8 | 8 |
9 #include "components/autofill/core/browser/autofill_regex_constants.h" | 9 #include "components/autofill/core/browser/autofill_regex_constants.h" |
10 | 10 |
11 // This macro is to workaround the fact that RE2 library only supports ASCII | 11 // This macro is to workaround the fact that RE2 library only supports ASCII |
12 // word boundaries and it is supposed to be the same as \b. | 12 // word boundaries and it is supposed to be the same as \b. |
13 #define WORDBREAK "(\\A|\\z|\\PL)" | 13 #define WORDBREAK "(?:\\A|\\z|\\PL)" |
14 | 14 |
15 namespace autofill { | 15 namespace autofill { |
16 | 16 |
17 ///////////////////////////////////////////////////////////////////////////// | 17 ///////////////////////////////////////////////////////////////////////////// |
18 // address_field.cc | 18 // address_field.cc |
19 ///////////////////////////////////////////////////////////////////////////// | 19 ///////////////////////////////////////////////////////////////////////////// |
20 const char kAttentionIgnoredRe[] = "attention|attn"; | 20 const char kAttentionIgnoredRe[] = "attention|attn"; |
21 const char kRegionIgnoredRe[] = | 21 const char kRegionIgnoredRe[] = |
22 "province|region|other" | 22 "province|region|other" |
23 "|provincia" // es | 23 "|provincia" // es |
24 "|bairro|suburb"; // pt-BR, pt-PT | 24 "|bairro|suburb"; // pt-BR, pt-PT |
25 const char kCompanyRe[] = | 25 const char kCompanyRe[] = |
26 "company|business|organization|organisation" | 26 "company|business|organization|organisation" |
27 "|firma|firmenname" // de-DE | 27 "|firma|firmenname" // de-DE |
28 "|empresa" // es | 28 "|empresa" // es |
29 "|societe|société" // fr-FR | 29 "|societe|société" // fr-FR |
30 "|ragione.?sociale" // it-IT | 30 "|ragione.?sociale" // it-IT |
31 "|会社" // ja-JP | 31 "|会社" // ja-JP |
32 "|название.?компании" // ru | 32 "|название.?компании" // ru |
33 "|单位|公司" // zh-CN | 33 "|单位|公司" // zh-CN |
34 "|회사|직장"; // ko-KR | 34 "|회사|직장"; // ko-KR |
35 const char kAddressLine1Re[] = | 35 const char kAddressLine1Re[] = |
36 "address.*line|address1|addr1|street" | 36 "address.*line|address1|addr1|street" |
37 "|(shipping|billing)address$" | 37 "|(?:shipping|billing)address$" |
38 "|strasse|straße|hausnummer|housenumber" // de-DE | 38 "|strasse|straße|hausnummer|housenumber" // de-DE |
39 "|house.?name" // en-GB | 39 "|house.?name" // en-GB |
40 "|direccion|dirección" // es | 40 "|direccion|dirección" // es |
41 "|adresse" // fr-FR | 41 "|adresse" // fr-FR |
42 "|indirizzo" // it-IT | 42 "|indirizzo" // it-IT |
43 "|住所1" // ja-JP | 43 "|住所1" // ja-JP |
44 "|morada|endereço" // pt-BR, pt-PT | 44 "|morada|endereço" // pt-BR, pt-PT |
45 "|Адрес" // ru | 45 "|Адрес" // ru |
46 "|地址" // zh-CN | 46 "|地址" // zh-CN |
47 "|주소.?1"; // ko-KR | 47 "|주소.?1"; // ko-KR |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
121 "|estado|provincia" // pt-BR, pt-PT | 121 "|estado|provincia" // pt-BR, pt-PT |
122 "|область" // ru | 122 "|область" // ru |
123 "|省" // zh-CN | 123 "|省" // zh-CN |
124 "|地區" // zh-TW | 124 "|地區" // zh-TW |
125 "|^시[·・]?도"; // ko-KR | 125 "|^시[·・]?도"; // ko-KR |
126 | 126 |
127 ///////////////////////////////////////////////////////////////////////////// | 127 ///////////////////////////////////////////////////////////////////////////// |
128 // credit_card_field.cc | 128 // credit_card_field.cc |
129 ///////////////////////////////////////////////////////////////////////////// | 129 ///////////////////////////////////////////////////////////////////////////// |
130 const char kNameOnCardRe[] = | 130 const char kNameOnCardRe[] = |
131 "card.?(holder|owner)|name.*" WORDBREAK "on" WORDBREAK ".*card" | 131 "card.?(?:holder|owner)|name.*" WORDBREAK "on" WORDBREAK ".*card" |
132 "|(card|cc).?name|cc.?full.?name" | 132 "|(?:card|cc).?name|cc.?full.?name" |
133 "|karteninhaber" // de-DE | 133 "|karteninhaber" // de-DE |
134 "|nombre.*tarjeta" // es | 134 "|nombre.*tarjeta" // es |
135 "|nom.*carte" // fr-FR | 135 "|nom.*carte" // fr-FR |
136 "|nome.*cart" // it-IT | 136 "|nome.*cart" // it-IT |
137 "|名前" // ja-JP | 137 "|名前" // ja-JP |
138 "|Имя.*карты" // ru | 138 "|Имя.*карты" // ru |
139 "|信用卡开户名|开户名|持卡人姓名" // zh-CN | 139 "|信用卡开户名|开户名|持卡人姓名" // zh-CN |
140 "|持卡人姓名"; // zh-TW | 140 "|持卡人姓名"; // zh-TW |
141 const char kNameOnCardContextualRe[] = | 141 const char kNameOnCardContextualRe[] = |
142 "name"; | 142 "name"; |
143 const char kCardNumberRe[] = | 143 const char kCardNumberRe[] = |
144 "(card|cc|acct).?(number|#|no|num)" | 144 "(?:card|cc|acct).?(?:number|#|no|num)" |
145 "|nummer" // de-DE | 145 "|nummer" // de-DE |
146 "|credito|numero|número" // es | 146 "|credito|numero|número" // es |
147 "|numéro" // fr-FR | 147 "|numéro" // fr-FR |
148 "|カード番号" // ja-JP | 148 "|カード番号" // ja-JP |
149 "|Номер.*карты" // ru | 149 "|Номер.*карты" // ru |
150 "|信用卡号|信用卡号码" // zh-CN | 150 "|信用卡号|信用卡号码" // zh-CN |
151 "|信用卡卡號" // zh-TW | 151 "|信用卡卡號" // zh-TW |
152 "|카드"; // ko-KR | 152 "|카드"; // ko-KR |
153 const char kCardCvcRe[] = | 153 const char kCardCvcRe[] = |
154 "verification|card identification|security code|card code" | 154 "verification|card identification|security code|card code" |
(...skipping 17 matching lines...) Expand all Loading... | |
172 "|gueltig|gültig|monat" // de-DE | 172 "|gueltig|gültig|monat" // de-DE |
173 "|fecha" // es | 173 "|fecha" // es |
174 "|date.*exp" // fr-FR | 174 "|date.*exp" // fr-FR |
175 "|scadenza" // it-IT | 175 "|scadenza" // it-IT |
176 "|有効期限" // ja-JP | 176 "|有効期限" // ja-JP |
177 "|validade" // pt-BR, pt-PT | 177 "|validade" // pt-BR, pt-PT |
178 "|Срок действия карты" // ru | 178 "|Срок действия карты" // ru |
179 "|月"; // zh-CN | 179 "|月"; // zh-CN |
180 const char kExpirationYearRe[] = | 180 const char kExpirationYearRe[] = |
181 "exp|^/|year" | 181 "exp|^/|year" |
182 "|ablaufdatum|gueltig|gültig|yahr" // de-DE | 182 "|ablaufdatum|gueltig|gültig|jahr" // de-DE |
vabr (Chromium)
2015/12/10 14:07:02
Yawohl! :)
| |
183 "|fecha" // es | 183 "|fecha" // es |
184 "|scadenza" // it-IT | 184 "|scadenza" // it-IT |
185 "|有効期限" // ja-JP | 185 "|有効期限" // ja-JP |
186 "|validade" // pt-BR, pt-PT | 186 "|validade" // pt-BR, pt-PT |
187 "|Срок действия карты" // ru | 187 "|Срок действия карты" // ru |
188 "|年|有效期"; // zh-CN | 188 "|年|有效期"; // zh-CN |
189 | 189 |
190 // The "yy" portion of the regex is just looking for two adjacent y's. | 190 // The "yy" portion of the regex is just looking for two adjacent y's. |
191 const char kExpirationDate2DigitYearRe[] = | 191 const char kExpirationDate2DigitYearRe[] = |
192 "(exp.*date.*|mm\\s*[-/]\\s*)[^y]yy([^y]|$)"; | 192 "(?:exp.*date.*|mm\\s*[-/]\\s*)[^y]yy([^y]|$)"; |
193 const char kExpirationDate4DigitYearRe[] = | 193 const char kExpirationDate4DigitYearRe[] = |
194 "^mm\\s*[-/]\\syyyy$"; | 194 "^mm\\s*[-/]\\syyyy$"; |
195 const char kExpirationDateRe[] = | 195 const char kExpirationDateRe[] = |
196 "expir|exp.*date" | 196 "expir|exp.*date" |
197 "|gueltig|gültig" // de-DE | 197 "|gueltig|gültig" // de-DE |
198 "|fecha" // es | 198 "|fecha" // es |
199 "|date.*exp" // fr-FR | 199 "|date.*exp" // fr-FR |
200 "|scadenza" // it-IT | 200 "|scadenza" // it-IT |
201 "|有効期限" // ja-JP | 201 "|有効期限" // ja-JP |
202 "|validade" // pt-BR, pt-PT | 202 "|validade" // pt-BR, pt-PT |
203 "|Срок действия карты"; // ru | 203 "|Срок действия карты"; // ru |
204 const char kGiftCardRe[] = | 204 const char kGiftCardRe[] = |
205 "gift.?card"; | 205 "gift.?card"; |
206 const char kDebitGiftCardRe[] = | 206 const char kDebitGiftCardRe[] = |
207 "(visa|mastercard|discover|amex|american express).*gift.?card"; | 207 "(?:visa|mastercard|discover|amex|american express).*gift.?card"; |
208 const char kDebitCardRe[] = | 208 const char kDebitCardRe[] = |
209 "debit.*card"; | 209 "debit.*card"; |
210 | 210 |
211 | 211 |
212 ///////////////////////////////////////////////////////////////////////////// | 212 ///////////////////////////////////////////////////////////////////////////// |
213 // email_field.cc | 213 // email_field.cc |
214 ///////////////////////////////////////////////////////////////////////////// | 214 ///////////////////////////////////////////////////////////////////////////// |
215 const char kEmailRe[] = | 215 const char kEmailRe[] = |
216 "e.?mail" | 216 "e.?mail" |
217 "|courriel" // fr | 217 "|courriel" // fr |
218 "|メールアドレス" // ja-JP | 218 "|メールアドレス" // ja-JP |
219 "|Электронной.?Почты" // ru | 219 "|Электронной.?Почты" // ru |
220 "|邮件|邮箱" // zh-CN | 220 "|邮件|邮箱" // zh-CN |
221 "|電郵地址" // zh-TW | 221 "|電郵地址" // zh-TW |
222 "|(이메일|전자.?우편|[Ee]-?mail)(.?주소)?"; // ko-KR | 222 "|(?:이메일|전자.?우편|[Ee]-?mail)(.?주소)?"; // ko-KR |
223 | 223 |
224 | 224 |
225 ///////////////////////////////////////////////////////////////////////////// | 225 ///////////////////////////////////////////////////////////////////////////// |
226 // name_field.cc | 226 // name_field.cc |
227 ///////////////////////////////////////////////////////////////////////////// | 227 ///////////////////////////////////////////////////////////////////////////// |
228 const char kNameIgnoredRe[] = | 228 const char kNameIgnoredRe[] = |
229 "user.?name|user.?id|nickname|maiden name|title|prefix|suffix" | 229 "user.?name|user.?id|nickname|maiden name|title|prefix|suffix" |
230 "|vollständiger.?name" // de-DE | 230 "|vollständiger.?name" // de-DE |
231 "|用户名" // zh-CN | 231 "|用户名" // zh-CN |
232 "|(사용자.?)?아이디|사용자.?ID"; // ko-KR | 232 "|(?:사용자.?)?아이디|사용자.?ID"; // ko-KR |
233 const char kNameRe[] = | 233 const char kNameRe[] = |
234 "^name|full.?name|your.?name|customer.?name|bill.?name|ship.?name" | 234 "^name|full.?name|your.?name|customer.?name|bill.?name|ship.?name" |
235 "|name.*first.*last|firstandlastname" | 235 "|name.*first.*last|firstandlastname" |
236 "|nombre.*y.*apellidos" // es | 236 "|nombre.*y.*apellidos" // es |
237 "|^nom" // fr-FR | 237 "|^nom" // fr-FR |
238 "|お名前|氏名" // ja-JP | 238 "|お名前|氏名" // ja-JP |
239 "|^nome" // pt-BR, pt-PT | 239 "|^nome" // pt-BR, pt-PT |
240 "|姓名" // zh-CN | 240 "|姓名" // zh-CN |
241 "|성명"; // ko-KR | 241 "|성명"; // ko-KR |
242 const char kNameSpecificRe[] = | 242 const char kNameSpecificRe[] = |
(...skipping 30 matching lines...) Expand all Loading... | |
273 ///////////////////////////////////////////////////////////////////////////// | 273 ///////////////////////////////////////////////////////////////////////////// |
274 const char kPhoneRe[] = | 274 const char kPhoneRe[] = |
275 "phone|mobile" | 275 "phone|mobile" |
276 "|telefonnummer" // de-DE | 276 "|telefonnummer" // de-DE |
277 "|telefono|teléfono" // es | 277 "|telefono|teléfono" // es |
278 "|telfixe" // fr-FR | 278 "|telfixe" // fr-FR |
279 "|電話" // ja-JP | 279 "|電話" // ja-JP |
280 "|telefone|telemovel" // pt-BR, pt-PT | 280 "|telefone|telemovel" // pt-BR, pt-PT |
281 "|телефон" // ru | 281 "|телефон" // ru |
282 "|电话" // zh-CN | 282 "|电话" // zh-CN |
283 "|(전화|핸드폰|휴대폰|휴대전화)(.?번호)?"; // ko-KR | 283 "|(?:전화|핸드폰|휴대폰|휴대전화)(?:.?번호)?"; // ko-KR |
284 const char kCountryCodeRe[] = | 284 const char kCountryCodeRe[] = |
285 "country.*code|ccode|_cc"; | 285 "country.*code|ccode|_cc"; |
286 const char kAreaCodeNotextRe[] = | 286 const char kAreaCodeNotextRe[] = |
287 "^\\($"; | 287 "^\\($"; |
288 const char kAreaCodeRe[] = | 288 const char kAreaCodeRe[] = |
289 "area.*code|acode|area" | 289 "area.*code|acode|area" |
290 "|지역.?번호"; // ko-KR | 290 "|지역.?번호"; // ko-KR |
291 const char kPhonePrefixSeparatorRe[] = | 291 const char kPhonePrefixSeparatorRe[] = |
292 "^-$|^\\)$"; | 292 "^-$|^\\)$"; |
293 const char kPhoneSuffixSeparatorRe[] = | 293 const char kPhoneSuffixSeparatorRe[] = |
294 "^-$"; | 294 "^-$"; |
295 const char kPhonePrefixRe[] = | 295 const char kPhonePrefixRe[] = |
296 "prefix|exchange" | 296 "prefix|exchange" |
297 "|preselection" // fr-FR | 297 "|preselection" // fr-FR |
298 "|ddd"; // pt-BR, pt-PT | 298 "|ddd"; // pt-BR, pt-PT |
299 const char kPhoneSuffixRe[] = | 299 const char kPhoneSuffixRe[] = |
300 "suffix"; | 300 "suffix"; |
301 const char kPhoneExtensionRe[] = | 301 const char kPhoneExtensionRe[] = |
302 WORDBREAK "ext|ext" WORDBREAK "|extension" | 302 WORDBREAK "ext|ext" WORDBREAK "|extension" |
303 "|ramal"; // pt-BR, pt-PT | 303 "|ramal"; // pt-BR, pt-PT |
304 | 304 |
305 } // namespace autofill | 305 } // namespace autofill |
306 | 306 |
307 #undef WORDBREAK | 307 #undef WORDBREAK |
OLD | NEW |