2014-11-12 6 views
-3

У меня есть эта функция, которую я использую для удаления классов из элемента в javascript.Оптимизация Regex для удаления классов

var reg = new RegExp(cls+'(\\s|$)'); 
this.el.className = this.el.className.replace(reg, '').replace(/\s+$/g, ''); 

говорит, у вас есть три класса на элементе

show hide color 

первых два удаляется вместе с пробелом после него, третьих прибудут вынимаются, но так как нет никаких пробелов после этого, он оставляет перед ним. Затем строка имеет дополнительные пробелы в конце. Поэтому я добавил вторую функцию замены, чтобы избавиться от нее, но она используется только в одном случае.

Вопрос: Как избавиться от этой второй функции замены и сделать одно регулярное выражение так, как я хочу. Благодаря!

+1

Что вы пытаетесь сделать, удалить * все * классы ('element.className = '';' /'element.setAttribute ('класс', ''); ')? Или удалите определенный класс ('el.classList.remove ('color');')? –

+0

Извините за замешательство, я пытаюсь удалить определенный класс (следовательно, переменная cls в регулярном выражении). classList ненадежен, поэтому я не работаю с ним. –

+0

Регулярное выражение является правильным. Единственная причина может быть из-за пробела перед 'show' или двух пробелов после' color' – vks

ответ

0

Возможно, вы могли бы обрабатывать все случаи.

# (?:\s(?:show|hide|color)|(?:show|hide|color)\s|\b(?:show|hide|color)\b) 

(?: 
     \s 
     (?: show | hide | color) 
    | 
     (?: show | hide | color) 
     \s 
    | 
     \b       # Or^
     (?: show | hide | color) 
     \b       # Or $ 
) 
Смежные вопросы