Can't get Regular Expressions to work

any idea why ?


   function replaceLettersWithDashes (x)
   {
     
   
     var array1 = x.split('')
     var array2 = []
   
     
   
     for(i=0;i<array1.length;i++)
     {
       if(x[i]===/\p/)
       {
         array2.push('');
       }
     
       
       else if(x[i]=== /\W/)
       {
         array2.push(x[i])
       }

   
       else if (x[i]=== /\w/)
       {
         array2.push('-')
       }

       else
       {  
          array2.push('-')
       }

      
   
      }
   
    console.log(array2)
   
    var answer =  array2.join('')
   
    
   
    return answer;
   
     
}


replaceLettersWithDashes ('@ ~')
  
      ```

I want it to replace alphabetic letter with dashes, everything else should return as is

Im just concerned as to why the regular expressions dont seem to be working?

Unsure whats going on here, the num ‘073’ is being read as ‘59’ . Not sure if this is the only thing wrong.

function validMobileNumber (num) {
  
 
  console.log(num);
  console.log(typeof num)

  if (/^07[0-9]{9}/.test(num)===true)
  {
    return true;
  }

  if(/^\+447[0-9]{9}/.test(num)===true )
  {
    return true;
  }

  if(/^00447[0-9]{9}/.test(num)===true)
  {
   return true
  }

 return false;
}



Im testing the string ‘0750617250638’ against

image

Else it returns false, not sure whats up

image

function validMobileNumber (num) {
  
 num = String(num);
  console.log(num);
  console.log(typeof num)

  if (/^07[0-9]{9}/.test(num)===true || /^\+447[0-9]{9}/.test(num)===true ||/^00447[0-9]{9}/.test(num)===true)
  {
    return true;
  }

  if(/^\+447[0-9]{9}/.test(num)===true )
  {
    return true;
  }

  if(/^00447[0-9]{9}/.test(num)===true)
  {
   return true
  }

 return false;
}


validMobileNumber('0750617250638')



This is what I am testing this against

escribe('validMobileNumber', function () {
  it('returns false when passed a string of the wrong length', function () {
    expect(validMobileNumber('123')).to.equal(false);
    expect(validMobileNumber('0750617250638')).to.equal(false);
    expect(validMobileNumber('+447712368768724988')).to.equal(false);
  });
  it('returns true when passed a string of "07506172506"', function () {
    expect(validMobileNumber('07506172506')).to.equal(true);
  });
  it('returns true when passed a string of "+447506172506"', function () {
    expect(validMobileNumber('+447506172506')).to.equal(true);
  });
  it('returns true when passed a string of "00447506172506"', function () {
    expect(validMobileNumber('00447506172506')).to.equal(true);
  });
  it('returns false when passed a string of "07506189foo"', function () {
    expect(validMobileNumber('07506189foo')).to.equal(false);
  });
  it('returns false when passed a string of "00447506189foo"', function () {
    expect(validMobileNumber('00447506189foo')).to.equal(false);
  });
  it('returns false when passed a string of "+447506189foo"', function () {
    expect(validMobileNumber('+447506189foo')).to.equal(false);
  });
  it('returns true when passed random other valid phone numbers', function () {
    expect(validMobileNumber('00447555123456')).to.equal(true);
    expect(validMobileNumber('+447676111222')).to.equal(true);
    expect(validMobileNumber('07898888643')).to.equal(true);
    expect(validMobileNumber('07766555432')).to.equal(true);
    expect(validMobileNumber('07989765490')).to.equal(true);
  });
  it('returns false when passed random other invalid phone numbers', function () {
    expect(validMobileNumber('004475551&&&23456')).to.equal(false);
    expect(validMobileNumber('-447676111222')).to.equal(false);
    expect(validMobileNumber('09898888643')).to.equal(false);
    expect(validMobileNumber('+449166555432')).to.equal(false);
    expect(validMobileNumber('00448989765493')).to.equal(false);
    expect(validMobileNumber('cats')).to.equal(false);
  });
});

aaaaah so its testing for 9 or more rather than exactly 9 ok

oh so like \b to end it Ill check it out

^07[0-9]{9}\b

That is not the one I was thinking about, but it should work also.

Thanks!

image