2016-08-28 3 views
-1

Давайте прыгать прямо в:Регулярное выражение не работает?

JS

function detailCheck() { 
 
    var phNoLength = document.getElementById('phNo').value.length; //get value for phone number from form for checking 
 
    var cardNoLength = document.getElementById('cardNo').value.length; //get value for card number length for checking 
 
    var postCodeLength = document.getElementById("postCode").value.length //get value for post code length 
 
    var a = /^[-+]?[0-9]+$/; 
 
    var b = /^[A-Za-z]+$/; 
 
//if form is not got all inputs filled 
 
for (var i = 0; i < 5; i++) { 
 
    details = document.getElementById("myForm")[i].value; 
 
    if (details === "") { 
 
    var i = ("Please enter ALL your details."); 
 
    document.getElementById("formTital").innerHTML=i; 
 
    return; 
 
    } 
 
} 
 
//check if names have numbers in them 
 
if(b.test(document.getElementById("fName").value)){                  
 
if(b.test(document.getElementById("lName").value)){ 
 
//if names too short 
 
    if(fName < 3) {i = "Please enter a longer first name."; document.getElementById("formTital").innerHTML=i; return;} 
 
    if(lName < 3) {i = "Please enter a longer last name."; document.getElementById("formTital").innerHTML=i; return;} 
 
//if phone number not number 
 
    if(a.test(document.getElementById("phNo").value)){ 
 
//if phone number too short \t 
 
    if(phNoLength != 7) {var i ="Please use a phone number with 7 digits";document.getElementById("formTital").innerHTML=i; return;} 
 
//if CC is not a number 
 
     if(a.test(document.getElementById("cardNo").value)){ 
 
//if CC is too short 
 
     if(cardNoLength != 4) {var i ="Please use a card number with 4 digits";document.getElementById("formTital").innerHTML=i; return;} 
 
//if post code is not a number 
 
     if(a.test(document.getElementById("postCode").value)){ 
 
     if(postCodeLength != 4) {var i ="Please use a card number with 4 digits";document.getElementById("formTital").innerHTML=i; return;} 
 

 

 
    } else {var i ="Please only use numbers in your post code."; document.getElementById("formTital").innerHTML=i; return;} 
 

 
    } else {var i ="Please only use numbers in your credit card."; document.getElementById("formTital").innerHTML=i; return;} 
 

 
    } else {var i ="Please only use numbers in your Phone number."; document.getElementById("formTital").innerHTML=i; return;} 
 
    
 
    } else {var i = "Please don't use numbers in your last name."; document.getElementById("formTital").innerHTML=i; return;} 
 
    
 
} else {var i = "Please don't use numbers in your first name."; document.getElementById("formTital").innerHTML=i; return;} 
 
toggleContent(); 
 
}
<form id="myForm" action="form_action.asp"> 
 
    First name: <br> <input class="formInput" type="text" id="fName" name="fName"><br> 
 
    Last name: <br> <input class="formInput" type="text" id="lName" name="lName"><br> 
 
    Phone Number: <br> <input class="formInput" type="number" id="phNo" name="phNo" maxlength="7"><br> 
 
    Credit Card Number: <br> <input class="formInput" type="password" id="cardNo" name="cardNo" maxlength="4"><br> 
 
    Address: <br> <input class="formInput" type="text" id="address" name="address"><br> 
 
    Post code: <br> <input class="formInput" type="number" id="postCode" name="postCode" maxlength="4"><br> 
 
    </form>

я могу передать вход в телефонный номер, как -234567 и он пройти, несмотря на var a = /^[-+]?[0-9]+$/;. Например, если я добавляю 123456+, ничего не происходит.

+1

Строка -234567 соответствует шаблону, который у вас есть для 'a', так почему бы ему не пройти? Чего вы ожидаете? Какое поведение вы видите, что отличается от того, что вы хотите видеть? –

+0

Нам необходимо четко и полностью указать, какую комбинацию символов (то есть чисел) вы хотите сопоставить или не соответствовать желаемому [RegExp] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Справка/Global_Objects/RegExp). Пожалуйста, используйте примеры. – Makyen

+0

Ваш лучший выбор для решения - это Google, например: [javascript regular expression tester] (https://www.google.com/search?as_q=javascript+regular+expression+tester). Убедитесь, что вы выбрали тот, который * явно * указывает, что он использует регулярные выражения JavaScript (существует несколько типов). Затем используйте сайт, который вы выбрали, чтобы попробовать различные регулярные выражения в соответствии с тем, что вы хотите. – Makyen

ответ

0

попробовать этот код:

var a = /^[-+]?[0-9]+\+$/; 

var a = /^[-+]?[0-9]+\+$/; 
 
console.log("123456+".match(a))

+0

Что это значит? – Draxy

+0

use \, like '\ /' –

+0

Странно, я не уверен, что это сделал, но он больше не проходит - ведьма хороша. + возвращает «Пожалуйста, используйте только номера в своем номере телефона». ведьма странная. e также может быть помещен в числовой ввод, это возвращает «Пожалуйста, введите ВСЕ ваши данные», средство ведьмы для сонной странной причины, доза не учитывает форму как «заполненную». Есть идеи? – Draxy

0

Ваш вопрос не ясно, как к тому, что вы на самом деле хотите. Предполагая, что вы хотите, чтобы соответствовать номера телефонов США с RegExp, следующее Маха несколько стилей представляющих 10 или 7 цифр номера США телефон:

var phoneNumberRegExp = /^(?:\(?([2-9]\d{2})[)-]? ?)?([2-9]\d{2})-?(\d{4})$/; 

Это должно соответствовать:

2134567 
213-4567 
213-456-7890 
(213)456-7890 
(213) 456-7890 

Примечание: 0 и 1 являются недопустимыми первые цифры для кода региона или префикса (первые 3 номера 7-значного номера телефона).

Первый capture group будет код города. Второй - это префикс (обмен). Третий номер абонента.

Однако регулярного выражения действительно недостаточно для проверки номера телефона. Вам гораздо лучше использовать специализированную библиотеку, например Google's libphonenumber.

+0

Его вопрос кажется мне очень понятным. Он хочет исключить любую запись, содержащую любые символы в его наборе символов. –

+0

Кстати, где вы поняли, что это касается телефонных номеров? Кажется, речь идет о почтовых кодах. –

+0

@torazaburo, я написал ответ на [оригинальный вопрос, касающийся номеров телефонов] (http://stackoverflow.com/revisions/39188264/1). ОП массово пересмотрел свой вопрос 2 часа назад. – Makyen