回答
以下のいずれかで、正常に判定できます。
JavaScript
1//match()は、文字列が引数の正規表現にマッチしている場合、
2//マッチした情報を持つ配列を返す
3//マッチしていない場合、nullを返す
4if(x.match(/^\d+$/)){
5 //処理
6}
JavaScript
1//search()は、文字列が引数の正規表現にマッチしている場合、
2//マッチした文字列の位置を返す
3//マッチしていない場合、-1を返す
4if(x.search(/^\d+$/) >= 0){
5 //処理
6}
JavaScript
1//exec()は、引数の文字列が正規表現にマッチしている場合、
2//マッチした情報を持つ配列を返す
3//マッチしていない場合、nullを返す
4if(/^\d+$/.exec(x)){
5 //処理
6}
JavaScript
1//test()は、引数の文字列が正規表現にマッチしている場合、trueを返す
2//そうでない場合、falseを返す
3if(/^\d+$/.test(x)){
4 //処理
5}
補足
/\d+/は正規表現オブジェクト(RegExpオブジェクト)です。文字列と正規表現オブジェクトを比較しても、その結果は必ずfalseになるため、正常に動作していません。
各例で、正規表現に/\d+/ではなく、/^\d+$/を使用しているのは、hoge123hugaのような文字列も正確に判定するためです。
詳細は、MDN web docs - 正規表現をご覧ください。