手機號身份證號*****加密

今天寫的一個頁面,裏面有個效果,手機號中間4位數字被替換了星號,這個效果挺簡單的,實現的方法有多種,既可以是字符串截取也可以用正則 ^_^

要達到的效果如下:

135****2627

JS代碼:

方法 ① :字符串截取+拼接

var phone = '13500001111';


phone.substr(0, 3) + '****' + phone.substr(7, 11);

  

這種方法的原理是先截取字符串的前3位字符,拼接上中間的4個*號,再截取字符串的後4位字符。substring()函數也是可以的哦。

將上面的寫成個方法,以後可以複用。

function formatPhone(phone) {

return phone.substr(0, 3) + '****' + phone.substr(7, 11);

}

  

以後需要調用的時候把手機號碼傳進去就可以了。

注意:phone的類型是字符串哦,怎麼你想直接傳入數字?那稍微修改下好了。

function formatPhone(phone) {

if (typeof phone == 'number') {

phone = phone.toString();

}

return phone.substr(0, 3) + '****' + phone.substr(7, 11);

}

  

判斷下參數的類型是不是數值型,是的就轉換成字符串型,如果你還想嚴謹點,可以再判斷下其他類型,確保是字符串型才執行代碼。

有沒有覺得方法①比較水呢?那就用正則裝裝逼吧。

方法 ②:正則表達式替換

function formatPhone(phone) {

return phone.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");

}

 

 

原理是先匹配前3個數字,將匹配到的值給$1,然後匹配中間4個數字,再匹配最後4個數字給$2。

正則不懂的童鞋可以戳這裏《正則表達式簡單入門》

小結:中間4位替換成*號,爲什麼不是其他位置呢,首先你要知道手機號的規則,我國使用的手機號碼是11位的,前3位是號碼段,中間4位是地區編碼,最後4位是用戶編碼。你要替換多少位都沒關係,至少讓人知道這是個手機號碼就可以了,不過替換中間4位,是約定俗成的哦。

PHP:

順便說說在PHP中怎麼替換吧。

 <?php
            $phone = "13511112222";
            $pattern = "/(\d{0,3})\d{4}(\d{4})/";
            $replacement = "\$1****\$2";
            print preg_replace($pattern, $replacement, $phone);
        ?>
                    
        <?php
            $phone = "13264309555";
            echo substr_replace($phone,"****", 3, 4);
        ?>
                    
        <?php
            echo substr($phone, 0, 3)."****".substr($phone, 7, 4);
        ?>

<?php
    $identity= "410727200107022658"; //身份證格式
    echo substr_replace($identity,"****", 5, 9);
?>

 

Smarty:

 <{'13511112222'|regex_replace:"/(\d{0,3})\d{4}(\d{4})/":"\$1****\$2"}>

  

總結:上面列舉的方法不僅可以替換手機號,像身份證號、電話號碼、IP等,甚至用戶名這些都是可以的,只不過正則要有針對的去寫咯,這裏就不在說了,有時間的話都寫個例子出來。

 

原文地址:http://www.mingsixue.com/blog/effect/JS-phone-to-asterisk.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章