From f88735b9a90e8a98d77e01dc349ea07f52995620 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 7 May 2020 23:11:54 +0300 Subject: [PATCH] Do not highlight parts of float numbers as bank card numbers. GitOrigin-RevId: cc58f030c6485c393f115fb89a4e9a5b2e6b40b9 --- td/telegram/MessageEntity.cpp | 4 ++-- test/message_entities.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/td/telegram/MessageEntity.cpp b/td/telegram/MessageEntity.cpp index a22714650..872899996 100644 --- a/td/telegram/MessageEntity.cpp +++ b/td/telegram/MessageEntity.cpp @@ -422,7 +422,7 @@ static vector match_bank_card_numbers(Slice str) { const unsigned char *end = str.uend(); const unsigned char *ptr = begin; - // '/(?<=^|[^+_\pL\d-])[\d -]{13,}([^_\pL\d-]|$)/' + // '/(?<=^|[^+_\pL\d-.,])[\d -]{13,}([^_\pL\d-]|$)/' while (true) { while (ptr != end && !is_digit(*ptr)) { @@ -435,7 +435,7 @@ static vector match_bank_card_numbers(Slice str) { uint32 prev; next_utf8_unsafe(prev_utf8_unsafe(ptr), &prev, "match_bank_card_numbers"); - if (prev == '+' || prev == '-' || prev == '_' || + if (prev == '.' || prev == ',' || prev == '+' || prev == '-' || prev == '_' || get_unicode_simple_category(prev) == UnicodeSimpleCategory::Letter) { while (ptr != end && (is_digit(*ptr) || *ptr == ' ' || *ptr == '-')) { ptr++; diff --git a/test/message_entities.cpp b/test/message_entities.cpp index d01060a69..e29e3059f 100644 --- a/test/message_entities.cpp +++ b/test/message_entities.cpp @@ -201,7 +201,7 @@ TEST(MessageEntities, bank_card_number) { check_bank_card_number(" - - - - 1 - -- 234 - - 56- - 7890150000 - - - -", {"1 - -- 234 - - 56- - 7890150000"}); check_bank_card_number("4916-3385-0608-2832; 5280 9342 8317 1080 ;345936346788903", {"4916-3385-0608-2832", "5280 9342 8317 1080", "345936346788903"}); - check_bank_card_number("4556728228023269,4916141675244747020,49161416752447470,4556728228023269", + check_bank_card_number("4556728228023269, 4916141675244747020, 49161416752447470, 4556728228023269", {"4556728228023269", "4916141675244747020", "4556728228023269"}); check_bank_card_number("a1234567890128", {}); check_bank_card_number("1234567890128a", {}); @@ -210,7 +210,7 @@ TEST(MessageEntities, bank_card_number) { check_bank_card_number("1234567890128_", {}); check_bank_card_number("_1234567890128", {}); check_bank_card_number("1234567890128/", {"1234567890128"}); - check_bank_card_number(",1234567890128", {"1234567890128"}); + check_bank_card_number("\"1234567890128", {"1234567890128"}); check_bank_card_number("+1234567890128", {}); }