正则表达式检查输入是否与固定电话区号相匹配

时间:2013-06-19 05:05:51

标签: 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('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;
}

3 个答案:

答案 0 :(得分:3)

当你没有将if / else括在花括号中时,用分号关闭它,所以alert会关闭if,而return 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;
    }
}

FIDDLE

答案 1 :(得分:1)

你在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;
}

答案 2 :(得分:0)

试试这个。适用于几乎所有格式 - + 61255555555,0255555555,+ 61 2 5555 5555,+ 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