2016-07-09 15 views
2

Hier ist ein Validierungscode, mit dem ich die Mobiltelefonnummer validiere. Wenn ich eine Handynummer mit Alphabeten oder einer ungültigen Nummer eingegeben habe, akzeptiert sie das auch. Kann jemand vorschlagen, was darin falsch ist?Das Feld für die Mobiltelefonnummer akzeptiert auch eine ungültige Nummer

Dank

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: Ich dachte an die Bedingung von 10 Stellen zu entfernen und Benutzer zur Eingabe eines regex die Handynummern nach ihrer Wahl und ihren eigenen Weg und dann ersetzen/umformatieren lassen mit so dass nur 10 Ziffern Handy-Nummer in die Datenbank geht. Während der Google-Suche habe ich irgendwo auf Stackoverflow gefunden, dass ^(?:(?:\+|0{0,2})91(\s*[\-]\s*)?|[0]?)?[789]\d{9}$ gut für die Reform in folgenden Szenarien funktioniert. Freuen, wenn jemand kann mir helfen, es zu formatieren und die neu formatiert Ziffern zeigen, wenn der Benutzer das nächste Textfeld geht in (Fokus verliert)

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

'g.match (h3)! = Null': sollte das nicht' g.match (h3) === null' oder '! H3.test (g)' sein? – gcampbell

+0

Allgemeiner Tipp: Es ist einfacher zu verwenden ' ". – gcampbell

+0

well maxlength = "10" ist eine gute Idee. Vielen Dank für Ihren Rat, aber Benutzer geben die Zahlen nach ihrer Wahl ein, so dass ich meine Frage bearbeitet habe. – Sabha

Antwort

2

warum nicht nur [0-9] verwenden als regex, basicly wenn dies nicht der Fall in 0-9 ist es ungültig, vielleicht + Sie für internationale Anrufe möchten, die 00 infront Telefonnummer ist ..

Bitte sehen Sie sich diese Tester auch wenn Sie nicht bereits haben:

http://www.regexpal.com/

https://regex101.com/

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. 
} 

Wenn es nicht mit /[0-9+]/g gefunden ist es nicht legal

+0

Ja, Sie haben Recht, das gab mir eine Idee, das Szenario ein wenig zu ändern. Ich habe meine Frage bearbeitet – Sabha

2

Verwendung Im Folgenden Code: -

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; 
     } 
     }  
    } 

Aktualisiert Ihre regex Code.

+0

Danke. Ich wollte nach einigem Nachdenken die 10-stelligen Kriterien abschaffen und habe meine Frage bearbeitet. – Sabha

1

Dieser reguläre Ausdruck passt für alle von Ihnen genannten Anwendungsfälle und lehnt andere Muster strikt ab.

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

Danke. Ich habe Probleme damit, die vom Benutzer eingegebene Nummer zu ersetzen und sie zu einer 10-stelligen Zahl zu machen. Ich versuche, den Code so zu manipulieren, dass, wenn der Benutzer eine beliebige Zahl in irgendeiner Form eingibt und sich von der Eingabebox entfernt, diese sofort zu einer 10-stelligen Nummer wechseln und sie in dem Eingabefeld anzeigen sollte. Ich habe onclick, onblur versucht, aber ich bin nicht in der Lage, das Ereignis auszulösen, wenn der Benutzer den Fokus aus dem Eingabefeld bewegt. Kannst du helfen? Vielen Dank – Sabha

Verwandte Themen