Как более корректно составить регулярку?

В строке может встречаться одна из последовательностей:

free internal
free stationary
free linear
loaded internal
loaded stationary
loaded linear

Между словами может быть один или несколько пробелов. Мне нужно, чтобы регулярка отлавливала каждую из этих последовательностей.

Я написал так:

(free\s+internal)|(free\s+stationary)|(free\s+linear)|(loaded\s+internal)|(loaded\s+stationary)|(loaded\s+linear)

Можно ли это как-то упростить до вида:

(free|loaded)\s+(internal|stationary|linear)

??

То есть может быть free или loaded или оба. А затем должно идти любое из internal|stationary|linear

Как записать такую регулярку попроще?


Ответы (1 шт):

Автор решения: UModeL

(free|loaded)\s+(internal|stationary|linear) - это у Вас самая правильная и оптимальная регулярка, в данном случае. Только её ещё нужно в скобки обернуть:

let sTxt = `free internal
free stationary
free linear
loaded internal
loaded stationary
loaded linear`;

let rExp = /((free|loaded)\s+(internal|stationary|linear))/g;

console.log(sTxt.match(rExp));

→ Ссылка