電話番号を変更する正規表現を作成しようとしています。+
国際番号 (米国以外) の場合は、シンボルを保持したい( %2B
URL エンコード後)。国内番号の場合は、%2B
を削除1
し、先頭に を付けた 11 桁の形式に変更する必要があります。
4 つの使用例は次のとおりです。
%2B2125551000
になります0112125551000
(これは、で始まるため、国際番号と見なす必要があります+[2-9]
– に置き換え+
ます011
)%2B12125551000
になります12125551000
(こちらは+1
国内番号ですので を剥がしてください+
)2125551000
12125551000
(国内番号としてはありません+
)12125551000
12125551000
(国内番号としてはありません+
)
Linuxでsedを使用してこれをテストしようとしています:
マッチングを行う式は次のとおりです。
((%2B)|)?((1)|)?([0-9]{10})
ただし、必ずしも 5 つの引数すべてが必要なわけではありません。%2B
文字列が の場合にのみ保持する必要があり%2B[2-9]
ます。
$ for line in %2B2125551000 %2B12125551000 12125551000 2125551000;do echo $line | sed -r 's/^((%2B|))?((1)|)?([0-9]{10})/one:\1 two:\2 three:\3 four:\4 five:\5/';done
one:%2B two:%2B three: four: five:2125551000
one:%2B two:%2B three:1 four:1 five:2125551000
one: two: three:1 four:1 five:2125551000
one: two: three: four: five:2125551000