正则表达式替换:混淆电话号码

时间:2012-08-16 09:56:41

标签: regex validation

我一直在尝试创建一个混淆了phonen umbers的正则表达式,但是有点麻烦。

假设我有像

这样的电话号码
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这样的结果

2 个答案:

答案 0 :(得分:0)

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

我会匹配2个(前3个字符,然后是其余的数字),然后用你正在使用的任何语言的x替换后者。

答案 1 :(得分: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