2016-01-19 4 views
-2

У меня есть строка, которая выглядит как этотJavaScript RegEx для замены последовательных строк

"+919357F%7F%7F%7F%00%00%00%29Your%20OTP%20for"

мне нужно все подряд %7F заменен ~

я нашел почти рабочий раствор с помощью этой команды

"+919357F%7F%7F%7F%00%00%00%29Your%20OTP%20for".replace(/[%7F]{2,}/g, '~'); 

Но по какой-то причине он съедает пару других % отмечает, что мне нужно сохранить целостность. Также я не мог понять, что означает {2,}? Я знаю, что он отвечает за последовательные замены, но не уверен, почему 2 или 3 имеет значение?

+0

Что ожидается выход? Вы просто хотите извлечь OPT? – Tushar

+0

Это регулярное выражение означает «заменить любые две или более последовательных последовательностей ЛЮБОГО из этих трех символов:%, 7, F, с одним ~, повторно, до конца ввода». Если входной сигнал был 5000 '7', за которым следует одиночный '%', тогда результат будет одним ~. – doug65536

+0

Попробуйте это '' + 919357F% 7F% 7F% 7F% 00% 00% 00% 29Your% 20OTP% 20for ".replace (/ \% 7F/g, '~');' – choz

ответ

2

Заменить [] (символьный класс), присутствующие в вашем RegEx с () (захвата или не захватив группу). Внутри класса символов все символы рассматриваются как отдельный шаблон. Так [fo] будет соответствовать одному символу либо f или o, а не группа символов, как fo

str.replace(/(?:%7F){2,}/g, '~'); 

это будет заменить два или более %7F с ~. То есть, %7F%7Fb%7F будет изменен на ~b%7F

Или

str.replace(/(?:%7F)+/g, '~'); 

Но это было бы заменить один или несколько вхождений %7F с ~. Таким образом, %7F%7Fb%7F будет изменен на ~b~

+0

второй подходит для моей цели. – oshomaniac

+0

[Примите этот ответ.] (Http://stackoverflow.com/help/accepted-answer) –

+0

Я не вижу возможности принять ответ. руководство мне PLS. – oshomaniac

Смежные вопросы