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 回答