Как разбить строку на два или более слова? - PullRequest
2 голосов
/ 21 апреля 2019

У меня есть следующая строка

"@bm5ja7qyd1ljuqcqb09@ == 'test2' and @bm5ja7qyd1ljuqcqb09@ != 'test1' or @wersf4vrdf1f5e@ == 'test2' and @sdfsd56fe6sdfs@ != 'test1'"

Мне нужно разделить их на and и or. Я хочу вывод, как это

@bm5ja7qyd1ljuqcqb09@ == 'test2'
@bm5ja7qyd1ljuqcqb09@ != 'test1'
@wersf4vrdf1f5e@ == 'test2'
@sdfsd56fe6sdfs@ != 'test1'

Я могу разделить только одну работу, как and или or. Но мне нужно разделить, если он имеет and или or.

1 Ответ

4 голосов
/ 21 апреля 2019

Вы можете использовать Regex с ИЛИ (|)

var str = "@bm5ja7qyd1ljuqcqb09@ == 'test2' and @bm5ja7qyd1ljuqcqb09@ != 'test1' or @wersf4vrdf1f5e@ == 'test2' and @sdfsd56fe6sdfs@ != 'test1'"

var strArr = str.split(/ and | or /g);
console.log(strArr);

Обновлено, как вы указали другой случай в комментарии , разделив его словами, которых нет в одинарных кавычках:

var str = "@bm5ja7qyd1ljuqcqb09@ == 'test2' and @bm5ja7qyd1ljuqcqb09@ != 'test1' or @wersf4vrdf1f5e@ == 'test2' and @sdfsd56fe6sdfs@ != 'test1' and @bm5ja7qyd1ljuqcqb09@ == 'test2 and or other value'"

var strArr = str.split(/(?!\B'[^']*) and (?![^']*'\B)|(?!\B'[^']*) or (?![^']*'\B)/g);
console.log(strArr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...