Использование Regex в javascript, чтобы найти все вхождения вплоть до определенной строки, но исключая - PullRequest
0 голосов
/ 16 апреля 2020

Так что, в основном, учитывая эту строку iiisdoso я хочу извлечь всю часть строки раньше, но исключая букву o. Так что в основном iiisd и s. У меня на данный момент просто есть

const data = "iiisdoso"
const regex = /(.*?)o/g

console.log(data.match(regex))

, но этот результат включает в себя o in, но моя цель - возвращать результаты вплоть до, но исключая o

1 Ответ

1 голос
/ 16 апреля 2020

Как уже упоминалось в комментариях, вы можете достичь этого с помощью отрицаний и классов символов:

const data = "iiisdoso"
const regex = /([^o]+)/g

console.log(data.match(regex))

Это даст вам желаемый результат

["iiisd", "s"]

Но это соответствует любой строке без "о" после этого тоже! Чтобы избежать этого, вам нужно использовать

const regex = /([^o]+)o/g

. В этом случае «o» включается в совпадения и должно быть удалено для каждой строки массива результатов - например, с

mymatch.replace('o','')

Интересно: если вы используете

const regex = /([^o]*)/g

Результат будет

["iiisd", "", "s", "", ""]

Это то, чего я не понимаю. Хорошо - я понимаю, что пустая строка также соответствует регулярному выражению и может быть помещена прямо перед "o". Но почему мы получаем третью пустую строку в самом конце?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...