1

電話番号を難読化する正規表現を作成しようとしていますが、少し問題があります。

次のような電話番号があるとしましょう

123-1231234
123 1231234
123-123 12 12
01555555

そして、最初の数字または空白の後に数字をXに置き換えたくないので、結果は次のようになります

123-XXXXXXX
123 XXXXXX
123-XXX XX XX
015XXXXXXX (if there's no whitespace or - then everything after 3rd digit).

しかし、正規表現が苦手で、苦労してこの式 (-(\d+))|(\s(\d+)) を思いつきましたが、 123X のような結果しか得られません

4

2 に答える 2

0
/([0-9]{3})([0-9 -.]{3,})/g

2 つの部分 (最初の 3 文字と残りの数字) を一致させ、後者を使用している言語の x に置き換えます。

于 2012-08-16T12:31:02.093 に答える
0

これを perl で行う方法を次に示します。

use strict;
use warnings;

while(<DATA>) {
    chomp;
    my ($begin, $end) = $_ =~ /^(\d{3}-?)(.*)$/;
    $end =~ s/\d/X/g;
    print $begin . $end, "\n";
}

__DATA__
123-1231234
123 1231234
123-123 12 12
0155555555

出力:

123-XXXXXXX
123 XXXXXXX
123-XXX XX XX
015XXXXXXX
于 2012-08-16T12:58:17.647 に答える