2012-08-16 94 views
1

我一直在试图创建一个混淆phonen成员的正则表达式,但有点麻烦。正则表达式替换:混淆电话号码

比方说,我有电话号码,如

123-1231234 
123 1231234 
123-123 12 12 
01555555 

,我wan't以取代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

+3

这是什么语言?为什么必须是正则表达式?没有,它可能会更容易。 – RoToRa 2012-08-16 11:13:38

回答

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

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

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