Eu quero usar o seguinte regex com awk para validar números de telefone:
echo 012-3456-7890 | awk '/^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$/ {print $0}'
Mas estou recebendo o seguinte erro:
awk: line 1: regular expression compile failed (missing operand)
Como os intervalos usados aqui são de comprimento fixo, você pode simplesmente escrever o intervalo inteiro
[0-9]{3}
=>[0-9][0-9][0-9]
. E em vez de(| |-|.)
,( |-|.)?
- embora eu esteja confuso: você está permitindo algum caractere (.
), além de espaço e-
? Então poderia ser apenas uma.?
vez que o espaço e-
são correspondidos de.
qualquer maneira. Se você estiver correspondendo ao período literal.
, deverá usar[- .]?
em vez disso (a entrelinha-
é para evitar a interpretação como um intervalo de caracteres). Então:Torna-se: