Я застрял с функцией регулярного выражения. Было довольно весело разрабатывать его, чтобы довести его до того уровня, на котором он сейчас находится, но я не могу улучшить его, даже используя другие примеры в Интернете.
У меня есть следующая функция регулярных выражений, которую я использую для определения 16-ти git номеров карт,
(?<=^|[^0-9])[0-9]{16}(?=[^0-9]|$)|[0-9]{4}[-| |_][0-9]{4}[-| |_][0-9]{4}[-| |_][0-9]{4}
Эта функция обнаруживает следующие результаты,
1) 1234123412341234 (все 16 цифр)
2) 1234 1234 1234 1234
3) 1234-1234-1234-1234 (номера карт с дефисами и пробелами)
4) Найди меня 1234-1234-1234-1234 Найди меня (номера карт скрыты в тексте)
Что я пытаюсь остановить, так это ложные срабатывания, которые я получаю, и я знаю, что Прямой результат достижения результата № 4 выше. Ложные срабатывания - это более 16 цифр, которые явно не являются номерами карт. Например,
1) 1234-1234-1234-1234-1234
При обнаружении первых 16 цифр в строке регулярное выражение возвращает значение. Я создал процедуру, которая отфильтровывает эти ложные срабатывания, но я подумал, что стоит посмотреть, сможет ли кто-то улучшить вышеперечисленное, чтобы другие могли использовать функцию регулярного выражения. Другие примеры на inte rnet, похоже, не справились со мной.