Ajuda com expressão regular do número do cartão

Ajuda com expressão regular do número do cartão

Usei o seguinte comando + REGEX para listar todos os arquivos que contêm números de cartão em um conjunto de arquivos.

grep -r -l -e '[3-6]\d{3}([\ \-]?)\d{4}([\ \-]?)\d{4}([\ \-]?)\d{3,4}' *

Testei este REGEX em um aplicativo diferente e foi bem-sucedido.

Responder1

O grep simples usa expressões regulares básicas. Seu regex usa -de ?que {m,n}não são reconhecidos.

Você quer grep -E, mas isso pode não reconhecer \d. Se não, mude para[0-9]

grep -Erle '[3-6][0-9]{3}([ -]?)[0-9]{4}([ -]?)[0-9]{4}([ -]?)[0-9]{3,4}' *

Ou use grep -Ppara usar expressões regulares compatíveis com Perl

Referência:https://www.gnu.org/software/gnulib/manual/html_node/Regular-expression-syntaxes.html

informação relacionada