2016-07-09 4 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}$ хорошо работает для перестройки в следующих сценариях. Цените, если кто-то может помочь мне переформатировать и показать переформатирован цифры, когда пользователь переходит в следующий текстовое поле (проигравшей фокус)

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

well maxlength = "10" - хорошая идея. Спасибо за ваши советы, но пользователи набирают номера по своему выбору, поэтому я редактировал свой вопрос. – Sabha

ответ

2

почему бы не просто использовать [0-9], как регулярное выражение, поясню, если это не в 0-9 он является недействительным, может быть, вы хотите + для международных звонков, что составляет 00 Infront номера телефона ..

Пожалуйста, проверьте эти тестеры также, если вы еще не:

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

Если он не нашел с /[0-9+]/g это не законно

+0

Да, вы правы, что дало мне идею немного изменить сценарий. Я отредактировал мой вопрос – Sabha

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=/^[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

Смежные вопросы