fune/browser/extensions/formautofill/content/heuristicsRegexp.js
Sean Lee a9b71ba7de Bug 1403007 - Add the regexp flag to cc-exp rule. r=MattN
MozReview-Commit-ID: KXU4jHxhRuH

--HG--
extra : rebase_source : 51aa36fc73345e045db0a3351233170e77b13241
2017-09-27 10:12:21 +08:00

267 lines
9.6 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/*
* Form Autofill field Heuristics RegExp.
*/
/* exported HeuristicsRegExp */
"use strict";
var HeuristicsRegExp = {
// These regular expressions are from Chromium source codes [1]. Most of them
// converted to JS format have the same meaning with the original ones except
// the first line of "address-level1".
// [1] https://cs.chromium.org/chromium/src/components/autofill/core/browser/autofill_regex_constants.cc
RULES: {
// ==== Email ====
"email": new RegExp(
"e.?mail" +
"|courriel" + // fr
"|メールアドレス" + // ja-JP
"|Электронной.?Почты" + // ru
"|邮件|邮箱" + // zh-CN
"|電郵地址" + // zh-TW
"|(?:이메일|전자.?우편|[Ee]-?mail)(.?주소)?", // ko-KR
"iu"
),
// ==== Telephone ====
"tel-extension": new RegExp(
"\\bext|ext\\b|extension" +
"|ramal", // pt-BR, pt-PT
"iu"
),
"tel": new RegExp(
"phone|mobile|contact.?number" +
"|telefonnummer" + // de-DE
"|telefono|teléfono" + // es
"|telfixe" + // fr-FR
"|電話" + // ja-JP
"|telefone|telemovel" + // pt-BR, pt-PT
"|телефон" + // ru
"|电话" + // zh-CN
"|(?:전화|핸드폰|휴대폰|휴대전화)(?:.?번호)?", // ko-KR
"iu"
),
// ==== Address Fields ====
"organization": new RegExp(
"company|business|organization|organisation" +
"|firma|firmenname" + // de-DE
"|empresa" + // es
"|societe|société" + // fr-FR
"|ragione.?sociale" + // it-IT
"|会社" + // ja-JP
"|название.?компании" + // ru
"|单位|公司" + // zh-CN
"|회사|직장", // ko-KR
"iu"
),
"street-address": new RegExp(
"streetaddress|street-address",
"iu"
),
"address-line1": new RegExp(
"^address$|address[_-]?line(one)?|address1|addr1|street" +
"|(?:shipping|billing)address$" +
"|strasse|straße|hausnummer|housenumber" + // de-DE
"|house.?name" + // en-GB
"|direccion|dirección" + // es
"|adresse" + // fr-FR
"|indirizzo" + // it-IT
"|^住所$|住所1" + // ja-JP
"|morada|endereço" + // pt-BR, pt-PT
"|Адрес" + // ru
"|地址" + // zh-CN
"|^주소.?$|주소.?1", // ko-KR
"iu"
),
"address-line2": new RegExp(
"address[_-]?line(2|two)|address2|addr2|street|suite|unit" +
"|adresszusatz|ergänzende.?angaben" + // de-DE
"|direccion2|colonia|adicional" + // es
"|addresssuppl|complementnom|appartement" + // fr-FR
"|indirizzo2" + // it-IT
"|住所2" + // ja-JP
"|complemento|addrcomplement" + // pt-BR, pt-PT
"|Улица" + // ru
"|地址2" + // zh-CN
"|주소.?2", // ko-KR
"iu"
),
"address-line3": new RegExp(
"address[_-]?line(3|three)|address3|addr3|street|suite|unit" +
"|adresszusatz|ergänzende.?angaben" + // de-DE
"|direccion3|colonia|adicional" + // es
"|addresssuppl|complementnom|appartement" + // fr-FR
"|indirizzo3" + // it-IT
"|住所3" + // ja-JP
"|complemento|addrcomplement" + // pt-BR, pt-PT
"|Улица" + // ru
"|地址3" + // zh-CN
"|주소.?3", // ko-KR
"iu"
),
"address-level2": new RegExp(
"city|town" +
"|\\bort\\b|stadt" + // de-DE
"|suburb" + // en-AU
"|ciudad|provincia|localidad|poblacion" + // es
"|ville|commune" + // fr-FR
"|localita" + // it-IT
"|市区町村" + // ja-JP
"|cidade" + // pt-BR, pt-PT
"|Город" + // ru
"|市" + // zh-CN
"|分區" + // zh-TW
"|^시[^도·・]|시[·・]?군[·・]?구", // ko-KR
"iu"
),
"address-level1": new RegExp(
// JS does not support backward matching, so the following pattern is
// applied in FormAutofillHeuristics.getInfo() rather than regexp.
// "(?<!united )state|county|region|province"
"state|county|region|province" +
"|land" + // de-DE
"|county|principality" + // en-UK
"|都道府県" + // ja-JP
"|estado|provincia" + // pt-BR, pt-PT
"|область" + // ru
"|省" + // zh-CN
"|地區" + // zh-TW
"|^시[·・]?도", // ko-KR
"iu"
),
"postal-code": new RegExp(
"zip|postal|post.*code|pcode" +
"|pin.?code" + // en-IN
"|postleitzahl" + // de-DE
"|\\bcp\\b" + // es
"|\\bcdp\\b" + // fr-FR
"|\\bcap\\b" + // it-IT
"|郵便番号" + // ja-JP
"|codigo|codpos|\\bcep\\b" + // pt-BR, pt-PT
"|Почтовый.?Индекс" + // ru
"|邮政编码|邮编" + // zh-CN
"|郵遞區號" + // zh-TW
"|우편.?번호", // ko-KR
"iu"
),
"country": new RegExp(
"country|countries" +
"|país|pais" + // es
"|国" + // ja-JP
"|国家" + // zh-CN
"|국가|나라", // ko-KR
"iu"
),
// ==== Name Fields ====
"name": new RegExp(
"^name|full.?name|your.?name|customer.?name|bill.?name|ship.?name" +
"|name.*first.*last|firstandlastname" +
"|nombre.*y.*apellidos" + // es
"|^nom" + // fr-FR
"|お名前|氏名" + // ja-JP
"|^nome" + // pt-BR, pt-PT
"|姓名" + // zh-CN
"|성명", // ko-KR
"iu"
),
"given-name": new RegExp(
"first.*name|initials|fname|first$|given.*name" +
"|vorname" + // de-DE
"|nombre" + // es
"|forename|prénom|prenom" + // fr-FR
"|名" + // ja-JP
"|nome" + // pt-BR, pt-PT
"|Имя" + // ru
"|이름", // ko-KR
"iu"
),
"additional-name": new RegExp(
"middle.*name|mname|middle$" +
"|apellido.?materno|lastlastname" + // es
// This rule is for middle initial.
"middle.*initial|m\\.i\\.|mi$|\\bmi\\b",
"iu"
),
"family-name": new RegExp(
"last.*name|lname|surname|last$|secondname|family.*name" +
"|nachname" + // de-DE
"|apellido" + // es
"|famille|^nom" + // fr-FR
"|cognome" + // it-IT
"|姓" + // ja-JP
"|morada|apelidos|surename|sobrenome" + // pt-BR, pt-PT
"|Фамилия" + // ru
"|\\b성(?:[^명]|\\b)", // ko-KR
"iu"
),
// ==== Credit Card Fields ====
"cc-name": new RegExp(
"card.?(?:holder|owner)|name.*(\\b)?on(\\b)?.*card" +
"|(?:card|cc).?name|cc.?full.?name" +
"|karteninhaber" + // de-DE
"|nombre.*tarjeta" + // es
"|nom.*carte" + // fr-FR
"|nome.*cart" + // it-IT
"|名前" + // ja-JP
"|Имя.*карты" + // ru
"|信用卡开户名|开户名|持卡人姓名" + // zh-CN
"|持卡人姓名", // zh-TW
"iu"
),
"cc-number": new RegExp(
"(add)?(?:card|cc|acct).?(?:number|#|no|num|field)" +
"|nummer" + // de-DE
"|credito|numero|número" + // es
"|numéro" + // fr-FR
"|カード番号" + // ja-JP
"|Номер.*карты" + // ru
"|信用卡号|信用卡号码" + // zh-CN
"|信用卡卡號" + // zh-TW
"|카드", // ko-KR
"iu"
),
"cc-exp-month": new RegExp(
"expir|exp.*mo|exp.*date|ccmonth|cardmonth|addmonth" +
"|gueltig|gültig|monat" + // de-DE
"|fecha" + // es
"|date.*exp" + // fr-FR
"|scadenza" + // it-IT
"|有効期限" + // ja-JP
"|validade" + // pt-BR, pt-PT
"|Срок действия карты" + // ru
"|月", // zh-CN,
"iu"
),
"cc-exp-year": new RegExp(
"exp|^/|(add)?year" +
"|ablaufdatum|gueltig|gültig|jahr" + // de-DE
"|fecha" + // es
"|scadenza" + // it-IT
"|有効期限" + // ja-JP
"|validade" + // pt-BR, pt-PT
"|Срок действия карты" + // ru
"|年|有效期", // zh-CN
"iu"
),
"cc-exp": new RegExp(
"expir|exp.*date|^expfield$" +
"|gueltig|gültig" + // de-DE
"|fecha" + // es
"|date.*exp" + // fr-FR
"|scadenza" + // it-IT
"|有効期限" + // ja-JP
"|validade" + // pt-BR, pt-PT
"|Срок действия карты", // ru
"iu"
),
},
};