鍍金池/ 問(wèn)答/Java  PHP  HTML/ 國(guó)際電話的正則驗(yàn)證

國(guó)際電話的正則驗(yàn)證

遇到一個(gè)問(wèn)題,邊輸入,邊按334格式動(dòng)顯示短橫杠,例如戶輸1234567890,展示123-456-7890.
求教大神如果用正則該怎么做匹配。我嘗試了大半天,總是匹配不到正確的位置。

回答
編輯回答
冷咖啡

$str = '1234567890';

$pattern = "/(\d{3})(\d{3})(\d{4})/";

echo preg_replace($pattern,"\${1}-\${2}-\${3}",$str);

123-456-7890

2017年10月5日 01:09
編輯回答
使勁操

下面的代碼可以在 chrome 瀏覽器的開(kāi)發(fā)者工具的控制臺(tái)中運(yùn)行,僅供參考。

var phone_number = '1234567890';
phone_number.replace(/(\d{3})(\d{3})(\d{4})/, function(full, a, b, c){
  if(full === phone_number) {
    return a + '-' + b + '-' + c;
  } else {
    console.log('電話號(hào)碼格式不正確');
    return full;
  }
});
2017年12月11日 11:04
編輯回答
玄鳥(niǎo)
let phone = '1234567890'.replace(/(\d{3})(\d{3})(\d{4})/, `$1-$2-$3`)
2017年8月16日 07:29
編輯回答
絯孑氣
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>phone</title>
</head>

<body>
    <div style="position: relative;">
        <input type="text" id="display" style="position: absolute;">
        <!-- 隱藏input用于輸入 -->
        <input type="text" id="input" style="position: absolute; opacity: 0;">
    </div>

    <script>
        var input = document.getElementById('input');
        var display = document.getElementById('display');

        input.oninput = function () {
            // 只保留十位數(shù)字
            this.value = this.value.replace(/^.*?(\d{1,10}).*?$/, '$1');
            // 提取號(hào)碼段
            var nums = this.value.match(/^(\d{0,3})(\d{1,3})?(\d{1,4})?$/);
            // 格式化顯示
            display.value = nums[1] + (nums[2] ? '-' + nums[2] : '') + (nums[3] ? '-' + nums[3] : '');
        }
    </script>
</body>

</html>
2017年5月4日 13:53