Вы можете сначала избавиться от первой открывающей скобки и последней закрывающей скобки, используя replace()
Шаблон /^\((.*?)\)$/
получает открывающую скобку в начале, а затем захватывает все до (но не включая ) последняя закрывающая скобка.
Теперь, когда строка эпюрирована, "('Vegetable', 'startswith', 'k', true)"
становится "'Vegetable', 'startswith', 'k', true"
, вы можете использовать традиционный split()
:
console.log("('Vegetable', 'startswith', 'k', true)".replace(/^\((.*?)\)$/, "$1").split(', '));
Если вы хотите преобразовать части результата, содержащие "true"
или "false"
, в логическое значение, вы можете map()
результат:
console.log("('Vegetable', 'startswith', 'k', true, false)".replace(/^\((.*?)\)$/, "$1")
.split(', ')
.map(elem => elem === "true" ?
true :
elem === "false" ?
false :
elem));