function fromUpcA(upcastr) {
  var upca = upcastr.split('');

  if (upca.length == 12) {
    upca.pop();
  }

  var first = upca.shift();
  if (upca.length != 10 || first != 1 && first != 0) {
    return '';
  }

  var upcamask = upca.join(''),
    match = null,
    upce = '';

  // case 0-2
  if (match = upcamask.match(/^([0-9]{2})([0-2])0{4}([0-9]{3})$/ )) {
    upce = match[1] + match[3] + match[2];
  }
  // case 3
  else if (match = upcamask.match(/^([0-9]{3})0{5}([0-9]{2})$/)) {
    upce = match[1] + match[2] + '3';
  }
  // case 4
  else if (match = upcamask.match(/^([0-9]{4})0{5}([0-9])$/)) {
    upce = match[1] + match[2] + '4';
  }
  // case 5-9
  else if (match = upcamask.match(/^([0-9]{5})0{4}([5-9])$/)) {
    upce = match[1] + match[2];
  }

  return upce;
}
function fromUpcA(upcastr) {
  var upca = upcastr.split('');

  if (upca.length == 12) {
    upca.pop();
  }

  var first = upca.shift();
  if (upca.length != 10 || first != 1 && first != 0) {
    return '';
  }

  var upcamask = upca.join(''),
    match = null,
    upce = '';

  
  if (match = upcamask.match(/^([0-9]{2})([0-2])0{4}([0-9]{3})$/ )) {
    upce = match[1] + match[3] + match[2];
  }
  
  else if (match = upcamask.match(/^([0-9]{3})0{5}([0-9]{2})$/)) {
    upce = match[1] + match[2] + '3';
  }
  
  else if (match = upcamask.match(/^([0-9]{4})0{5}([0-9])$/)) {
    upce = match[1] + match[2] + '4';
  }
  
  else if (match = upcamask.match(/^([0-9]{5})0{4}([5-9])$/)) {
    upce = match[1] + match[2];
  }

  return upce;
}
function fromUpcA ( upcastr ) { var upca = upcastr . split ( '' ) ; if ( upca . length == 12 ) { upca . pop ( ) ; } var first = upca . shift ( ) ; if ( upca . length != 10 || first != 1 && first != 0 ) { return '' ; } var upcamask = upca . join ( '' ) , match = null , upce = '' ; // case 0-2 if ( match = upcamask . match ( / ^([0-9]{2})([0-2])0{4}([0-9]{3})$ / ) ) { upce = match [ 1 ] + match [ 3 ] + match [ 2 ] ; } // case 3 else if ( match = upcamask . match ( / ^([0-9]{3})0{5}([0-9]{2})$ / ) ) { upce = match [ 1 ] + match [ 2 ] + '3' ; } // case 4 else if ( match = upcamask . match ( / ^([0-9]{4})0{5}([0-9])$ / ) ) { upce = match [ 1 ] + match [ 2 ] + '4' ; } // case 5-9 else if ( match = upcamask . match ( / ^([0-9]{5})0{4}([5-9])$ / ) ) { upce = match [ 1 ] + match [ 2 ] ; } return upce ; }
/*
Get a valid UPC-E pattern from UPC-A
NOTE: This gets the pattern only! It does not provide you with parity data
nor does it provide you with check digits, it ignores all that in the input

@param String - UPC-A String
@return String - UPC-E code pattern. Empty string if invalid
/ * Get a valid UPC - E pattern from UPC - A NOTE : This gets the pattern only! It does not provide you with parity data nor does it provide you with check digits it ignores all that in the input