2012-01-02 7 views
5

私は電話番号の国コード部分を置き換えるjavascript関数を実装しようとしています。携帯電話の国コードとjavascriptを一致させる

入力は+90(533)333 33 33です。+90部分をjavascriptに置き換えます。私は正規表現を書くことを試みたが、私は成功できなかった。

/^\++[a-z]+\s$/ 

EDIT:最終的な解決策

$("#ddlCountry").change(function() { 
    if ($("#tMobile").val() == '') { 
     $("#tMobile").val("+" + $(this).find(":selected").attr("CountryCode") 
     + " "); 
    } else { 
     $("#tMobile").val($("#tMobile").val().replace(/^(\+\d*)/, 
     "+" + $(this).find(":selected").attr("CountryCode"))); 
    } 
}); 
限り、あなたはあなたの入力がその形式になることを保証できるよう
+2

*? –

+0

その正規表現は、1つ以上の '+'に続いて、1つ以上の 'a-z'に続いて、ちょうど1つの空白を続けます。私はそれが「90」とどのように一致するかはわかりません。また、置換を行うためのコマンドも含まれていません。もっとコードを含めることはできますか?これは十分に近くに見えません。 – sarnold

+0

[0-9]もうまくいきませんでした。私は正規表現には不満です。 –

答えて

2

次のパターンは、国コードとの間に数字以外の文字が常に存在だと仮定すると、任意のcountry codeと一致する必要がありその数は次に来るものは何でも:/^(\+\d*)/

var phoneNumber = "+90 (533) 333 33 33"; 
phoneNumber = phoneNumber.replace(/^(\+\d*)/, '+852'); 
alert(phoneNumber); 

Try it on JSFiddle

編集を: をこれはちょっとばかげたことですが、あなたもこれを行うことができます:

var phoneNumber = "+90 (533) 333 33 33"; 
phoneNumber = phoneNumber.replace(/^(\+)(\d*)(.*)/, '$1852$3'); 
alert(phoneNumber); 

Try it on JSFiddle

新しい国コードにプラス記号を含める必要がないようにしようとしていましたが、上に示した以外の方法はありません。本質的には、3つのキャプチャグループを使用します.1つはプラス記号用、もう1つは国コード用、もう1つは電話番号用です。新しい国コードでは、$1$3の間に国コードを挟みます。

古い電話番号を最初の取得グルー​​プ(プラス記号)とそれに続く新しい電話番号に置き換えます新しい国コード( "852")、残りの電話番号( "(533)333 33 33")。

+0

@ハサン、私はこの回答を削除しましたが、私はより満足のいく解決策を探しました。私は先に行くと、それを元に戻すでしょう。私は現在、プラス記号ではなく、国番号の数字だけを置き換える方法を見つけようとしています。上記のコードは機能しますが、新しい国コードにプラス記号が含まれている必要があります。 – aeskr

1

var phone = '+90 (533) 333 33 33'; 
    phone.replace(/^\+[0-9]{2}/,'xyz') 

前:+90(533)333 33 33

後:xyz(533)333 33 33

+0

3桁の国コードと一致しません。 –

+0

申し訳ありませんが、この '/^\ + [0-9] {1、} /'を使用してください。 1〜3桁の国コードと一致します。 –

関連する問題