I got rejected in tech screen yesterday. I was asked to write a JavaScript function and send it over email. I have also added hiring manager's response at the bottom. > Could you please write a JavaScript function to compare two strings that look like phone numbers and indicate whether the digits in both strings match? (To be clear, while the input *looks* like phone numbers, this question doesn't care how phones/telephony/dialing works.) Your code should compare only the digits of the input, ignore any letters or punctuation, and ignore the fact that country/area codes can be optional. As an example, "(123) 456-7890" and "123.456.7890" match because both have the digits "1234567890" in that order, while "1-123-456-7890" and "123-456-7890" do not match (even though they'll probably reach the same person if dialed in the US). I wasn't sure if regex would be an acceptable solution so I implemented it two ways. Please, let me know what I could have done better. "use strict" var CompareNumbers = function () { //#region private variables var _phoneNumber1; var _phoneNumber2; var _minPhoneLength = 1; var _validateResult; var _notValidMessage = "Not a valid Phone Number"; var _successMessage = "Match"; var _failureMessage = "Not a Match"; var _inputArray1; var _inputArray2; var _numArray1; var _numArray2; //#endregion //#region private functions //function using regex to remove spaces & braces etc var _compNumbersUsingRegex = function (input1, input2) { if (_validateInputs(input1, input2)) { _phoneNumber1 = input1.replace(/[^0-9]+/g, ''); _phoneNumber2 = input2.replace(/[^0-9]+/g, ''); if (_validateInputs(_phoneNumber1, _phoneNumber2)) { if (_phoneNumber1 == _phoneNumber2) { return _successMessage; } else { return _failureMessage; } } return _notValidMessage; } else { return _notValidMessage; } } //function using arrays for comparison var _compNumbersUsingArray = function (input1, input2) { if (_validateInputs(input1, input2)) { _inputArray1 = new Array(); _inputArray2 = new Array(); _inputArray1 = input1.split(''); _numArray1 = new Array(); for (var i = 0; i < _inputArray1.length; i++) { if (!isNaN(_inputArray1[i]) && _inputArray1[i] != ' ') { _numArray1.push(_inputArray1[i]); } } _inputArray2 = input2.split(''); _numArray2 = new Array(); for (var i = 0; i < _inputArray2.length; i++) { if (!isNaN(_inputArray2[i]) && _inputArray2[i] != ' ') { _numArray2.push(_inputArray2[i]); } } if (_validateInputs()) { return _numArray1.toString() == _numArray2.toString() ? _successMessage : _failureMessage; } else { return _notValidMessage; } } else { return _notValidMessage; } } //Helper funciton to validate if inputs exceed a minimum number declared in variable section function _validateInputs(validate1, validate2) { if (validate1.length < _minPhoneLength || validate2.length < _minPhoneLength) { return false; } else { return true; } } //#endregion //#region public members var publics = { comparePhoneNumbers1: _compNumbersUsingArray, comparePhoneNumbers2: _compNumbersUsingRegex }; return publics; //#endregion }(); The response that I got back from the hiring manager was: > Thanks! I've looked over your code and think you captured the essence of the problem correctly. I like that you included both approaches - I prefer the _compNumbersUsingRegex implementation which is basically the one I like to see (regex+compare). That said, your resume shows you've been working with JavaScript in your current role, but some of the patterns I see in your code aren't quite in line with what I look for from senior developers on the team, so this role might not be the perfect match for you.