"Validate US Telephone Numbers"

function telephoneCheck(str) {
    var reg1 = /^1 ?\([0-9]{3}\)[- ]?[0-9]{3}[- ]?[0-9]{4}$/;
    var reg2 = /^1 ?[0-9]{3}[- ]?[0-9]{3}[- ]?[0-9]{4}$/;
    var reg3 = /^\([0-9]{3}\)[- ]?[0-9]{3}[- ]?[0-9]{4}$/;
    var reg4 = /^[0-9]{3}[- ]?[0-9]{3}[- ]?[0-9]{4}$/;
    return reg1.test(str) || reg2.test(str) || reg3.test(str) || reg4.test(str);
}

this solution is kind of ugly… anyone have a better solution of this question?

function telephoneCheck(str) {
  const regex = /(^1\(\d{3}\)\d{3}\W\d{4}|^1\s((\(\d+\)\s\d+\W\d+|\d+(\-|\s)\d+\W\d+))|^\(\d+\)\d{3}\W\d+|^\d{10}|^\d{3}\W\d+\W\d+)$/mg;
  let m;

  if ((m = regex.exec(str)) !== null) {
      return true;
  }
  else{
    return false;
  }
}

Can’t say if it’s better or worse :joy: