正则表达式不工作
Regular expression not working?
让我们直接进入主题:
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
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+,什么也没发生
试试下面的代码:
var a = /^[-+]?[0-9]+'+$/;
var a = /^[-+]?[0-9]+'+$/;
console.log("123456+".match(a))
你的问题不清楚你真正想要什么。假设您想要用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
不是有效的区号或前缀(7位电话号码的前3位)的第一个数字。
第一个捕获组将是区号。第二个是前缀(交换)。第三个是用户号码。
但是,对于验证电话号码来说,正则表达式确实是不够的。您最好使用专门的库,如Google的libphonenumber。
相关文章:
- javascript正则表达式验证未按预期工作
- Javascript正则表达式未按预期工作
- 如何让我的正则表达式代码在我的dojo cellWidget对象上工作
- 正则表达式未按预期工作 /(d).1/
- Javascript正则表达式在IE中失败,但在Chrome和Edge中工作
- FireFox插件sdk页面工作正则表达式
- 这个正则表达式不应该工作吗?
- javascript正则表达式,可以't让+表达式工作
- 如何让分组表达式和全局标志在 Javascript 正则表达式中同时工作
- 正则表达式不能用 .replace() 工作
- Javascript 正则表达式无法正常工作
- 正则表达式无法正常工作以识别 IE 版本
- 数据表正则表达式搜索无法按预期工作以实现完全匹配
- 这个正则表达式是如何工作的
- 为什么这个正则表达式不能按照我想要的方式工作
- 用于验证电子邮件无法正常工作的正则表达式
- 正则表达式在 javascript 中没有按预期工作
- 为什么我的正则表达式在 .NET 中工作,但在 Javascript 中不起作用
- 正则表达式无法正常工作
- 为什么这个JavaScript不能取代工作?(不包含正则表达式)