電話番号を確認するには、awkで次の正規表現を使用したいと思います。
echo 012-3456-7890 | awk '/^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$/ {print $0}'
ただし、次のエラーが発生します。
awk: line 1: regular expression compile failed (missing operand)
答え1
ここで使用される範囲は固定長なので、全体範囲[0-9]{3}
=>を簡単に作成できます[0-9][0-9][0-9]
。代わりに(| |-|.)
、( |-|.)?
- 混乱しているが、.
空白と()以外の文字を許可しますか-
?まあ、おそらく.?
スペースが原因で、とにかく-
一致しません.
。リテラルピリオドと一致する場合(文字範囲として解釈されないように)を.
使用する必要があります。だから:[- .]?
-
^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$
になる:
^\(?0[1-9][1-9]\)?[- .]?[1-9][0-9][0-9][0-9][- .][0-9][0-9][0-9][0-9]$