jquery&regexによる電話番号フォーマット

私は、入力値を確認して電話番号形式に変換する必要があります。

input er+f375g25123435s67 i need to convert into +375 25 1234567

..

keyup: function(){
newval = $(this).val().replace(/(\D+|\+)/g, '');
newval = newval.replace(/\d(?=(?:\d{3})+(?!\d))/g, '$& ');
$(this).val(newval);
}

..

これは別のコードです、私はそれを変更する必要があります..

3

3 答え

電話以外の関連文字を取り除くには:

var phone = "er+f375g25123435s67";
phone = phone.replace(/[^+|\d]/g, ""); //result = "+3752512343567"

その後、電話のパターンにマッチする:

if (phone.match(/^[+][0-9]{12}$/))//or /^[+][0-9]{13}$/ for 13 digits
    ...

EDIT: Here's what I was able to come up with for the test & replace:

phone = $(this).val().replace(/^[^+]{1}/, '');
if (phone.length > 1)
    phone = phone.substring(0,1) + phone.substring(1).replace(/[^\d]/g, '');
if (phone.match(/^[+][\d]{12}$/))
    phone = phone.substring(0,4) + " " + phone.substring(4,6) + " " + phone.substring(6,14);

Located here: http://jsfiddle.net/cabbott/KaYeJ/

2
追加された
有効な文字列は12桁ですが、例の文字列には "+"と13桁の結果があります。私は正しい数字の桁数がわからない。
追加された 著者 CAbbott,
私はあなたのjsfiddleで気づいた。私はそれを扱うパターンを思いつくことができるかどうかを試してみる。
追加された 著者 CAbbott,
私は私の答えを更新し、新しいjsfiddleのURLにリンクしました。
追加された 著者 CAbbott,
コードの最初の部分は動作していますが、もう1つは動作しません。 jsfiddle.net/jhzy9
追加された 著者 drdarwin,
私は12桁、1プラスと2スペースを許可します..
追加された 著者 drdarwin,
親愛なるCAbbott、しかし私は電話のパターンに一致する必要はありません、私はフライ(入力内)に変換する必要があります.. - このような何か jsfiddle.net/sXGLB (コードはほぼ完了しています)
追加された 著者 drdarwin,
フォークボタンを押して、私に新しいURLを与えてください
追加された 著者 drdarwin,
$('input').live({   
    keyup: function() {           
        var ipt = $(this).val().replace(/[^\d]*/g, "");//remove non-digits

        ipt = ipt.replace(/(\d{1,3})(\d{1,2})?(\d{1,7})?.*/g, '+$1 $2 $3');

        $(this).val(ipt);       
    }
});

テストするためのフィドル

2
追加された
私は、外出先でフォーマットするための正規表現を含む、動作するもので自分の答えを更新しました。
追加された 著者 Yuri Ghensev,
それでも..( jsfiddle.net/sXGLB
追加された 著者 drdarwin,
正規表現に ipt = "+" + ipt.substring(0,3)+ "" + ipt.substring(4,6)+ "" + ipt.substring(7)をエンコードする方法は?
追加された 著者 drdarwin,

あなたはこれを試すことができます:

//非数値を削除する

keyup:function(){

     

var phone = $(this).val()。replace(/ \ D/g、 '');
     var myRegexp = /(\ d {3})(\ d {3})(\ d *)/ g

     

var match = myRegexp.exec(電話);      $(this)).val( '+' + '[1] +' '+' [2] + '' + '[3]

 }
 

$ 1 $ 2と$ 3は375 25 1234567である必要があります

Comment : sorry didn't know you wanted a full answer with the code. http://jsfiddle.net/UcJeV/4/

2
追加された
残念ながら、このコードは動作しません( jsfiddle.net/cYk4q )ここにエラーがあるので (\ D + | +)
追加された 著者 drdarwin,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript