2013-01-17 3 views
-1

У меня есть фраза, которая может содержать 0 или более встроенных строк в ней так: «ЭТО 0lsdkfjl0MY 1lsdkfjl0SENTENCE». Структура этих встроенных строк соответствует выражению: (?: 0 | 1) lsdkfjl (?: 0 | 1 | 2 | 3 | 4). Мне нужно преобразовать все символы, кроме тех, которые соответствуют шаблону в нижнем регистре. Как я могу это сделать? Это в JavaScript.RegExp для выбора всех, кроме определенных символов

ответ

0

Вы можете использовать захват группы и замены функции:

str.replace(/[^dontmatch]+/g, function(match) { 
    return match.toLowerCase(); 
}); 

Вот пример:

> 'ADFGXYZ'.replace(/[^AD]+/g, function(match) { return match.toLowerCase(); }); 
"ADfgxyz" 
+0

это то, что я пытаюсь сделать, но строка, что мне нужно, чтобы пропустить не набор символов. Как я уже сказал, у нее есть образец. Поэтому я не могу сказать str.replace (/ [^ (?: 0 | 1) lsdkfjl (?: 0 | 1 | 2 | 3 | 4)] +/g, ...), можно ли? – chibis

+0

@ user1988833: Почему вы не выбираете точную противоположность? '([^ 01] (?:. *) [^ 0-4])'. – Blender

+0

Это тоже не работает. Это не просто цифры, которые я пытаюсь пропустить. Это шаблон, который начинается с цифры и заканчивается цифрой, но любой символ, используемый в этом шаблоне, но не в точном порядке, должен быть сопоставлен , поэтому, если у меня есть 0lsdkfjl4 - это должно быть пропущено, но просто lsdkfjl не должен – chibis

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