2012-08-16 48 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