Давайте прыгать прямо в:Регулярное выражение не работает?
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+, ничего не происходит.
Строка -234567 соответствует шаблону, который у вас есть для 'a', так почему бы ему не пройти? Чего вы ожидаете? Какое поведение вы видите, что отличается от того, что вы хотите видеть? –
Нам необходимо четко и полностью указать, какую комбинацию символов (то есть чисел) вы хотите сопоставить или не соответствовать желаемому [RegExp] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Справка/Global_Objects/RegExp). Пожалуйста, используйте примеры. – Makyen
Ваш лучший выбор для решения - это Google, например: [javascript regular expression tester] (https://www.google.com/search?as_q=javascript+regular+expression+tester). Убедитесь, что вы выбрали тот, который * явно * указывает, что он использует регулярные выражения JavaScript (существует несколько типов). Затем используйте сайт, который вы выбрали, чтобы попробовать различные регулярные выражения в соответствии с тем, что вы хотите. – Makyen