Не 'e' и не 'x' не находит, как исправить странный результат?
Пробельные символы тоже надо исключить:

str.match(/a[^ex\s]a/g)
'aba aea aca aza axa a-a a#a'
  .split(" ")
  .filter(s => s.match(/^a[^ex]+a$/))
// aba,aca,aza,a-a,a#a
Хотя, как понять задание.. Может, так:'aba aea aca aza axa a-a a#a'
  .match(/a[^ex]+a/g)
// aba a, a aca aza a, a a-a a#a Ведь, например, в строке a aca aza a в начале и в конце действительно "a", и между ними нет ни "e" ни "x"..