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 и более символов)