Index: components/autofill/core/browser/autofill_regex_constants.cc |
diff --git a/components/autofill/core/browser/autofill_regex_constants.cc b/components/autofill/core/browser/autofill_regex_constants.cc |
index 4aed1a53c579b8817bdca54a10f75b9a3053601d..d4b49cbb4387d83b5873004647eb5945988093e2 100644 |
--- a/components/autofill/core/browser/autofill_regex_constants.cc |
+++ b/components/autofill/core/browser/autofill_regex_constants.cc |
@@ -8,6 +8,10 @@ |
#include "components/autofill/core/browser/autofill_regex_constants.h" |
+// This macro is to workaround the fact that RE2 library only supports ASCII |
+// word boundaries and it is supposed to be the same as \b. |
+#define WORDBREAK "(\\A|\\z|\\PL)" |
+ |
namespace autofill { |
///////////////////////////////////////////////////////////////////////////// |
@@ -84,11 +88,11 @@ const char kZipCodeRe[] = |
"zip|postal|post.*code|pcode" |
"|pin.?code" // en-IN |
"|postleitzahl" // de-DE |
- "|\\bcp\\b" // es |
- "|\\bcdp\\b" // fr-FR |
- "|\\bcap\\b" // it-IT |
+ "|" WORDBREAK "cp" WORDBREAK // es |
+ "|" WORDBREAK "cdp" WORDBREAK // fr-FR |
+ "|" WORDBREAK "cap" WORDBREAK // it-IT |
"|郵便番号" // ja-JP |
- "|codigo|codpos|\\bcep\\b" // pt-BR, pt-PT |
+ "|codigo|codpos|" WORDBREAK "cep" WORDBREAK // pt-BR, pt-PT |
"|Почтовый.?Индекс" // ru |
"|邮政编码|邮编" // zh-CN |
"|郵遞區號" // zh-TW |
@@ -98,7 +102,7 @@ const char kZip4Re[] = |
"|codpos2"; // pt-BR, pt-PT |
const char kCityRe[] = |
"city|town" |
- "|\\bort\\b|stadt" // de-DE |
+ "|" WORDBREAK "ort" WORDBREAK "|stadt" // de-DE |
"|suburb" // en-AU |
"|ciudad|provincia|localidad|poblacion" // es |
"|ville|commune" // fr-FR |
@@ -110,7 +114,7 @@ const char kCityRe[] = |
"|分區" // zh-TW |
"|^시[^도·・]|시[·・]?군[·・]?구"; // ko-KR |
const char kStateRe[] = |
- "(?<!united )state|county|region|province" |
+ "state|county|region|province" |
"|land" // de-DE |
"|county|principality" // en-UK |
"|都道府県" // ja-JP |
@@ -124,7 +128,8 @@ const char kStateRe[] = |
// credit_card_field.cc |
///////////////////////////////////////////////////////////////////////////// |
const char kNameOnCardRe[] = |
- "card.?(holder|owner)|name.*\\bon\\b.*card|(card|cc).?name|cc.?full.?name" |
+ "card.?(holder|owner)|name.*" WORDBREAK "on" WORDBREAK ".*card" |
+ "|(card|cc).?name|cc.?full.?name" |
"|karteninhaber" // de-DE |
"|nombre.*tarjeta" // es |
"|nom.*carte" // fr-FR |
@@ -148,7 +153,7 @@ const char kCardNumberRe[] = |
const char kCardCvcRe[] = |
"verification|card identification|security code|card code" |
"|cvn|cvv|cvc|csc|cvd|cid|ccv" |
- "|\\bcid\\b"; |
+ "|" WORDBREAK "cid" WORDBREAK; |
// "Expiration date" is the most common label here, but some pages have |
// "Expires", "exp. date" or "exp. month" and "exp. year". We also look |
@@ -247,7 +252,8 @@ const char kFirstNameRe[] = |
"|nome" // pt-BR, pt-PT |
"|Имя" // ru |
"|이름"; // ko-KR |
-const char kMiddleInitialRe[] = "middle.*initial|m\\.i\\.|mi$|\\bmi\\b"; |
+const char kMiddleInitialRe[] = |
+ "middle.*initial|m\\.i\\.|mi$|" WORDBREAK "mi" WORDBREAK; |
const char kMiddleNameRe[] = |
"middle.*name|mname|middle$" |
"|apellido.?materno|lastlastname"; // es |
@@ -293,7 +299,9 @@ const char kPhonePrefixRe[] = |
const char kPhoneSuffixRe[] = |
"suffix"; |
const char kPhoneExtensionRe[] = |
- "\\bext|ext\\b|extension" |
+ WORDBREAK "ext|ext" WORDBREAK "|extension" |
"|ramal"; // pt-BR, pt-PT |
} // namespace autofill |
+ |
+#undef WORDBREAK |