RegExp, вырезания строки

У меня есть такие кейсы:

 '123*45?=5?088' // надо 123
  '-5?*-1=5?', // надо -5?
  '19--45=5?', // надо 19
  '??*??=302?',// надо ??
  '?*11=??',  // надо ?

Что мне нужно? Я хочу вырезать первую подстроку т.е мне нужно вырезать до первого знака. Как сделать это с помощю регулярных выражений.


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

Автор решения: Владимир Клыков

Регулярка:

/(^-?\?*[\d]*\?*)/gm

"()" - группа, значение которое нам нужно получить
"^" - начало строки
"-" - знак минуса с модификатором "?"(не обязательность)
"\?" - знак вопроса, с модификатором количества "*"(0 и более символов)
"[\d]" - любая цифра, с модификатором количества "*"(0 и более символов)
"\?" - знак вопроса, с модификатором количества "*"(0 и более символов)

/g - поиск по всему тексту
/m - поиск в каждой строке как в отдельной части(^ - указывает на начало строки с таким модификатором, а не на начало всего текста).

Пример на js:

const regularka = new RegExp(/(^-?\?*[\d]*\?*)/gm);

let x = "?*11=??".split(regularka)[1];
console.log(x);

x = "-9?+11=??/dfgdf 99+11".split(regularka)[1];
console.log(x);

p.s. в комментариях дополнили, если знак вопроса - является частью числа и может быть в любом месте - регулярка будет намного проще:

/(^-?[\d?]+)/gm
"()" - группа, значение которое нам нужно получить
"^" - начало строки
"-" - знак минуса с модификатором "?"(не обязательность)
"[\d\?]" - любая цифра или знак вопроса, с модификатором количества "+"(1 и более символов)
→ Ссылка