Ich habe eine Liste von Wörtern durch Komma getrennt. Wie entferne ich ein Wort (Variable) mit RegEx und ohne einen Raum hinter sich zu lassen?RegEx lässt unerwünschten Speicherplatz hinter
Ansicht Beispielcode:
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>
Einschränkungen:
- ich das erkennen konnte mit String oder Array-Manipulation erreicht werden. Ich versuche jedoch, RegEx zu verstehen.
- Verwenden Sie nur eine RegEx. Zwei Ersetzungen erscheinen hässlich und unnötig.
- Ich kann nicht davon ausgehen, dass vor/nach dem gegebenen Wort immer ein Leerzeichen stehen wird.
Um Whitespace zu entsprechen, benötigen Sie das Literal '\ s' im Muster. Sie definieren einen optionalen Buchstaben 's' mit' \ s? 'In' new RegExp (classToRemove + "\ s?", "G"); '. Meintest du 'new RegExp (classToRemove +" \\ s? "," G ");'? Und die letzte Lösung, die Sie brauchen, ist 'var re = new RegExp (" \\ s * "+ classToRemove," g ");'. "" \\ s * "'. Beachten Sie, dass ('\ s *') null oder mehr Leerzeichen entspricht. –
beliebig viele Leerzeichen -> '\ s *' – vlaz
@ WiktorStribiżew was ist, wenn die Liste nur das Wort hat, das ich entfernen möchte? Es wird KEINE Leerzeichen enthalten, daher muss es optional sein. – warkentien2