2013-12-09 4 views
0

У меня есть большой текстовый файл, содержащий номера кредитных карт, мне сказали, что мне нужно просмотреть этот файл, а затем найти возможные номера кредитных карт, я использовал Notepad ++ «Поиск в файлах» в режиме поиска регулярных выражений используя это простое выражение: 4 \ d {15} (это ищет 16-разрядную длинную строку, начинающуюся с 4, которая обычно является дебетовой/кредитной VISA), а затем копирую и вставляю ее в скрипт проверки кредитной карты.Как найти 16-значную длинную строку (алгоритм Луна) с помощью notepad ++?

Есть ли способ создать выражение, которое будет искать 16-разрядные длинные строки, начиная с 4, и проверяет, использует ли он алгоритм Луна (удостоверяется, что он действителен).

Это Лун Алгоритм:

1) Начиная со второй по последней цифре и перемещение влево, двойное значение всех переменных цифр.

2) С левой стороны возьмите все незатронутые цифры и добавьте их к результатам всех отдельных цифр с шага 1. Если результаты любого из чисел с шага 1 являются двузначными цифрами, обязательно добавьте два числа сначала (т.е. 18 дают 1 + 8). В принципе, ваше уравнение будет выглядеть как обычная проблема с добавлением, которая добавляет каждую цифру.

3) Общее число с шага 2 должно заканчиваться на ноль, чтобы номер кредитной карты был действительным.

Источник: http://www.webopedia.com/TERM/L/Luhn_formula.html

+2

Вы не можете сделать это с помощью Notepad ++ в одиночку. Вам нужно будет написать код для этого. Могу ли я спросить, почему у вас есть неструктурированный текстовый файл с вещами, которые * выглядят как * номера кредитных карт? Это звучит очень подозрительно. –

+0

Я не совсем уверен, почему меня попросили сделать это, я работаю в компании, которая продает товары в Интернете, я считаю, что это как-то связано с перестройкой нашей базы данных ... »Вам нужно будет написать несколько код для этого ». ... Это не очень полезно, не могли бы вы дать мне лучшее объяснение? – user2786228

+0

Как сказал вам Lasse, вы НЕ МОЖЕТЕ проверять контрольную сумму Luhn просто с регулярными выражениями. Вам нужно будет написать что-то более сложное с использованием языка программирования. При поиске в Интернете вы найдете некоторые варианты алгоритма Луна на разных языках. Единственный способ сделать это в Notepad ++ - это использовать плагин PythonScript (поэтому ваша реализация должна быть в Python). – psxls

ответ

0

Вот простой LINQPad программа, которая извлекает все 16-значные номера, которые начинаются с 4 из файла:

void Main() 
{ 
    const string inputFileName = @"d:\temp\input.txt"; 
    const string outputFileName = @"d:\temp\output.txt"; 

    string input = File.ReadAllText(inputFileName); 
    var matches = 
     from Match ma in Regex.Matches(input, @"\d+") 
     let number = ma.Value 
     where number.Length == 16 && number.StartsWith("4") 
     select number; 

    var creditCardNumbers = 
     from match in matches 
     where IsCreditCardNumber(match) 
     select match; 

    File.WriteAllLines(outputFileName, creditCardNumbers); 
} 

public static bool IsCreditCardNumber(string number) 
{ 
    // validate luhn checksum here 
    return true; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^