Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Regex检查输入是否与固定电话区号匹配_Javascript_Regex_Phone Number - Fatal编程技术网

Javascript Regex检查输入是否与固定电话区号匹配

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

在澳大利亚,我们有区号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;
}

如果没有将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-我道歉。我指的是原始提交中的代码,并打算包括提交人的名字,而不是你的。我没有发现你的代码有任何问题,事实上我对它投了更高的票。