2016-07-09 17 views
2

ここには、携帯番号の検証に使用する確認コードがあります。アルファベットや無効な番号の携帯電話番号を入力すると、それも受け入れられます。誰かがこれに間違っていることを示唆することはできますかモバイル番号フィールドで無効な番号も受け入れる

おかげ

var g=document.getElementById('mobile').value; 
    if (g.length == 0) 
    { 
     alert("Please Enter Mobile Number."); 
     formn.mobile.focus(); 
     return false; 
    } 

    if(g.length>0) 
    { 
     if((g.length<10)||(g.length>10)) 
     { 
     alert("Mobile number should be 10 digits");  
     document.getElementById('mobile').focus(); 
     return false;  
     } 
     else 
     { 
     var h3=/^(?:(?:\+|0{0,2})91(\s*[\-]\s*)?|[0]?)?[789]\d{9}$/; 
     if(g.match(h3)!=null) 
     { 
     alert("Please Enter Valid Mobile Number"); 
     document.getElementById('mobile').focus(); 
     return false; 
     } 
     }  
    } 

EDIT:私は10桁条件を削除することを考えて、その選択肢と独自の方法に従って入力に携帯電話番号をユーザーに許可して、正規表現を使用した/再フォーマットを置き換えました10桁の携帯電話番号だけがデータベースに入ります。 Google検索の間、私はどこかでstackoverflowの^(?:(?:\+|0{0,2})91(\s*[\-]\s*)?|[0]?)?[789]\d{9}$が、以下のシナリオで再フォーマットするのに適していることを発見しました。誰かが私がそれを再フォーマットを支援し、ユーザーは、次のテキストボックス(フォーカスを失った)になったときに再フォーマットの数字を表示することができれば、なぜそれがないbasicly場合、正規表現として、[0-9]は使用しない

9883443344 
09883443344 
919883443344 
0919883443344  
+919883443344  
+91-9883443344 
0091-9883443344  
+91 -9883443344  
+91- 9883443344  
+91 - 9883443344 
0091 - 9883443344 
+0

'g.match(h3)!= null':これは' g.match(h3)=== null'または '!h3.test(g)'であってはいけませんか? – gcampbell

+0

一般的なヒント: ''を使う方が簡単です。 – gcampbell

+0

よくmaxlength = "10"は良い考えです。あなたのアドバイスをありがとうが、ユーザーは私の質問を編集したので、自分の選択に従って数字を入力します。 – Sabha

答えて

2

感謝

http://www.regexpal.com/

https://regex101.com/:0-9で、それはあなたがまだの場合は

も、これらのテスターをチェックしてみて下さい...多分あなたは電話番号の00インフロントで国際通話のために+したい、無効です

http://www.regexr.com/

var re = /[0-9+]/g; 
var str = '0700'; 
var m; 

while ((m = re.exec(str)) !== null) { 
    if (m.index === re.lastIndex) { 
     re.lastIndex++; 
    } 
    // View your result using the m-variable. 
    // eg m[0] etc. 
} 

それは、コードの下に法的

+0

はい、あなたは私にシナリオを少し変えるアイデアを与えてくれるのです。私は私の質問を編集しました – Sabha

2

使用しないで/[0-9+]/gを見つけていない場合: - あなたの正規表現のコードを更新しました

var g=document.getElementById('mobile').value; 
    if (g.length == 0) 
    { 
     alert("Please Enter Mobile Number."); 
     formn.mobile.focus(); 
     return false; 
    } 

    if(g.length>0) 
    { 
     if((g.length<10)||(g.length>10)) 
     { 
     alert("Mobile number should be 10 digits");  
     document.getElementById('mobile').focus(); 
     return false;  
     } 
     else 
     { 
     var h3=/^[1-9]{1}[0-9]{9}$/; 
     if(h3.test(document.getElementById('mobile').value) == false) 
     { 
     alert("Please Enter Valid Mobile Number"); 
     document.getElementById('mobile').focus(); 
     return false; 
     } 
     }  
    } 

+0

ありがとう。少し考えて10桁の基準を取り除き、私の質問を編集したかったのです。 – Sabha

1

この正規表現は、言及したすべてのユースケースに適合し、他のパターンを厳密に拒否します。

((00)|\+|0)?((91)|0)?\s{0,2}-?\s{0,2}(\d{10}) 
+0

ありがとうございます。私は、ユーザーが入力した番号を置き換えて10桁の数字にする方法に苦労しています。ユーザーが任意のフォームに数字を入力して入力ボックスから離れると、すぐに10桁の数字に変更して入力ボックスに表示するように、コードを操作しようとしています。 onclick、onblurを試しましたが、ユーザーが入力ボックスからフォーカスを移動したときにイベントをトリガーできません。手伝ってくれますか?ありがとう – Sabha

関連する問題