У меня есть список слов, разделенных запятой. e-mail: list.join(' ');
Как удалить слово (переменное) используя RegEx и не оставляя места позади?RegEx оставляет нежелательное пространство за
вид Пример кода:
var testClasses = document.getElementsByTagName("div")[0].className;
var classToRemove = "test3";
document.getElementsByTagName('p')[0].innerHTML = "Removing class ." + classToRemove + " from: <strong>" + testClasses + "</strong>";
var re = new RegExp(classToRemove + "\s?", "g");
testClasses = testClasses.replace(re, "");
// I ran into the same problem trying to be more specific
// var re = new RegExp("(\S+\s?)*(" + classToRemove + "\s?)(\S+\s?)*", "g");
// testClasses = testClasses.replace(re, "$1$3");
document.getElementsByTagName('p')[1].innerHTML = "becomes: <strong>" + testClasses + "</strong>" + " // which looks great on the DOM.";
console.log(testClasses);
console.log(testClasses.split(' '));
<div class="test1 test2 test3 test4 test5"></div>
<p></p>
<p></p>
<p>However, if you check console, the space is there. <br><strong>How do I remove this extra space?</strong> Without having to run a second replace.</p>
Ограничения:
- Я знаю, что это может быть достигнуто шпагатом или манипуляции массива. Тем не менее, я пытаюсь понять RegEx.
- Используйте только один регекс. Две замены кажутся уродливыми и ненужными.
- Я не могу предположить, что всегда будет пустое место до/после данного слова.
Для сопоставления пробелов вам нужно буквальное '\ s' в шаблоне. Вы определяете необязательную букву 's' с' \ s? 'В' new RegExp (classToRemove + "\ s?", "G"); '. Вы имели в виду 'new RegExp (classToRemove +" \\ s? "," G ");'? И, возможно, вам нужно окончательное решение: var re = new RegExp ("\\ s *" + classToRemove, "g"); '. ' "\\ с *"'. Обратите внимание, что ('\ s *') соответствует нулю или нескольким пробелам. –
любое количество пробелов -> '\ s *' – vlaz
@ WiktorStribiżew Что делать, если в списке только есть слово, которое я хочу удалить? Он вообще не будет иметь никаких пробелов, поэтому он должен быть необязательным. – warkentien2