Javascript Regex检查输入是否与固定电话区号匹配
在澳大利亚,我们有区号02、03、07、08,但是当我尝试将04放入字段时,它允许在不允许的情况下提交表单 我想知道是否有人知道如何解决这个问题Javascript Regex检查输入是否与固定电话区号匹配,javascript,regex,phone-number,Javascript,Regex,Phone Number,在澳大利亚,我们有区号02、03、07、08,但是当我尝试将04放入字段时,它允许在不允许的情况下提交表单 我想知道是否有人知道如何解决这个问题 function phtest(){ OTHERRegex = /^[07]{2}[0-9]{8}$/ NSWRegex = /^[02]{2}[0-9]{8}$/ VICRegex = /^[03]{2}[0-9]{8}$/ WARegex = /^[08]{2}[0-9]{8}$/ if (document.getElementById('phon
function phtest(){
OTHERRegex = /^[07]{2}[0-9]{8}$/
NSWRegex = /^[02]{2}[0-9]{8}$/
VICRegex = /^[03]{2}[0-9]{8}$/
WARegex = /^[08]{2}[0-9]{8}$/
if (document.getElementById('phone2').value != '' || NSWRegex.test(document.getElementById('phone2').value)
|| VICRegex.test(document.getElementById('phone2').value)
|| WARegex.test(document.getElementById('phone2').value)
|| OTHERRegex.test(document.getElementById('phone2').value))
alert('Please input correct Landline Phone Field\n');
return false;
else
return true;
}
如果没有将if/else括在curlybraces中,则使用分号将其关闭,因此警报将关闭if,返回false不起任何作用
function phtest(){
var elem = document.getElementById('phone2');
if (/^[(02|03|07|08)]{2}[0-9]{8}$/.test(elem.value)) {
return true;
}else{
alert('Please input correct Landline Phone Field\n');
return false;
}
}
如果不将if/else括在curlybraces中,则用分号将其关闭,因此警报将关闭if,返回false不起任何作用
function phtest(){
var elem = document.getElementById('phone2');
if (/^[(02|03|07|08)]{2}[0-9]{8}$/.test(elem.value)) {
return true;
}else{
alert('Please input correct Landline Phone Field\n');
return false;
}
}
您在if语句中遗漏了大括号。所以,无论如何,你都会得到错误的答案
if (document.getElementById('phone2').value != '' || NSWRegex.test(document.getElementById('phone2').value)
|| VICRegex.test(document.getElementById('phone2').value)
|| WARegex.test(document.getElementById('phone2').value)
|| OTHERRegex.test(document.getElementById('phone2').value))
{
^^^
alert('Please input correct Landline Phone Field\n');
return false;
}
^^^
else
{
return true;
}
我已修改了您的代码,您可以尝试:
function testPattern(phone){
var OTHERRegex = /^[07]{2}[0-9]{8}$/,
NSWRegex = /^[02]{2}[0-9]{8}$/,
VICRegex = /^[03]{2}[0-9]{8}$/,
WARegex = /^[08]{2}[0-9]{8}$/;
return (VICRegex.test(phone)
|| WARegex.test(phone)
|| NSWRegex.test(phone)
|| OTHERRegex.test(phone));
}
function phtest(){
var phone = document.getElementById('phone2').value;
var isValid = (phone
&& phone.length > 0
&& testPattern(phone));
if (!isValid) alert('Please input correct Landline Phone Field\n');
return isValid;
}
您在if语句中遗漏了大括号。所以,无论如何,你都会得到错误的答案
if (document.getElementById('phone2').value != '' || NSWRegex.test(document.getElementById('phone2').value)
|| VICRegex.test(document.getElementById('phone2').value)
|| WARegex.test(document.getElementById('phone2').value)
|| OTHERRegex.test(document.getElementById('phone2').value))
{
^^^
alert('Please input correct Landline Phone Field\n');
return false;
}
^^^
else
{
return true;
}
我已修改了您的代码,您可以尝试:
function testPattern(phone){
var OTHERRegex = /^[07]{2}[0-9]{8}$/,
NSWRegex = /^[02]{2}[0-9]{8}$/,
VICRegex = /^[03]{2}[0-9]{8}$/,
WARegex = /^[08]{2}[0-9]{8}$/;
return (VICRegex.test(phone)
|| WARegex.test(phone)
|| NSWRegex.test(phone)
|| OTHERRegex.test(phone));
}
function phtest(){
var phone = document.getElementById('phone2').value;
var isValid = (phone
&& phone.length > 0
&& testPattern(phone));
if (!isValid) alert('Please input correct Landline Phone Field\n');
return isValid;
}
试试这个。它适用于几乎所有格式-+612555555、025555555、+61255555、+61-2-5555-5555
function validateLandline(numberStr) {
var landlineRegex = /^((00|\+)61|0)(2|3|7|8)\d{8}$/;
return landlineRegex .test(numberStr.replace(/ /g,'').replace(/-/g,''));
}
validateLandline('+61255555555') // true
validateLandline('+61-2-5555-5555') // true
validateLandline('+61 2 5555 5555') // true
validateLandline('0255555555') // true
validateLandline('02 55555555') // true
validateLandline('+61455555555') // false
validateLandline('0455555555') // false and so on
试试这个。它适用于几乎所有格式-+612555555、025555555、+61255555、+61-2-5555-5555
function validateLandline(numberStr) {
var landlineRegex = /^((00|\+)61|0)(2|3|7|8)\d{8}$/;
return landlineRegex .test(numberStr.replace(/ /g,'').replace(/-/g,''));
}
validateLandline('+61255555555') // true
validateLandline('+61-2-5555-5555') // true
validateLandline('+61 2 5555 5555') // true
validateLandline('0255555555') // true
validateLandline('02 55555555') // true
validateLandline('+61455555555') // false
validateLandline('0455555555') // false and so on
或者甚至
/^0[2378][0-9]{8}$/
@Warlock,您的逻辑和正则表达式中也存在其他问题。作为练习,您可能希望将curlybraces添加到您的代码中并从那里开始工作。@dfsq-我知道有一种方法可以做到这一点,但regex并不是我真正喜欢的,没有
分隔符,我无法让它工作,谢谢@我正在编辑我的答案,请现在回顾并发表你的评论。@Warlock-我道歉。我指的是原始提交中的代码,并打算包括提交人的名字,而不是你的。我没有发现你的代码有任何问题,事实上我对它进行了升级。甚至可能是/^0[2378][0-9]{8}$/
@Warlock,你的逻辑和正则表达式中还有其他问题。作为练习,您可能希望将curlybraces添加到您的代码中并从那里开始工作。@dfsq-我知道有一种方法可以做到这一点,但regex并不是我真正喜欢的,没有
分隔符,我无法让它工作,谢谢@我正在编辑我的答案,请现在回顾并发表你的评论。@Warlock-我道歉。我指的是原始提交中的代码,并打算包括提交人的名字,而不是你的。我没有发现你的代码有任何问题,事实上我对它投了更高的票。