Вы можете решить эту проблему, указав, что сразу после com
может быть что угодно, начинающееся с sla sh или вопросительного знака (так как это также допустимый случай). Более того, я думаю, вам также следует добавить -
к той части, где вы сопоставляете доменное имя, поскольку это также допустимый символ в доменных именах.
Здесь я создал фрагмент с большим количеством тестовых примеров:
var a=["https://www.ex-ample.com", "https://www.example.com", "https://www.example.com?ala=makota","https://www.example.com/hz/wishlist/ls/3LIMPQXAM4REU?ref_=wl_share","https://www.example.commmmm/hz/wishlist/ls/3LIMPQXAM4REU?ref_=wl_share"];
var re=/^((https):\/\/)?(www.)[a-z0-9-]+(\.(com))+(\/.*|\?.*)?$/;
a.forEach(x=>console.log(x+" => "+re.test(x)));