2016-04-04 15 views
0

JAVASCRIPT REGULÄREN AUSDRÜCKENReguläre Ausdrücke in Javascript Löschen Räume

Dieser Code sucht nach einfachen Anführungszeichen und ersetzt sie durch doppelte Anführungszeichen. Es wird nicht ein einfaches Anführungszeichen ersetzen, die Teil eines Wortes ist (dh nicht)

function testRegExp(str) 
{ 
    var matchedStr = str.replace(/\W'|'\W/gi, '"'); 
    return matchedStr; 
} 
console.log(testRegExp("I'm in a 'blue house with a cat' and I don't care!")) 

RESULT ---> Ich bin in einem „blauen Haus mit einer Katze“ und ist mir egal !

Beachten Sie, dass es keine Leerzeichen gibt, in denen die doppelten Anführungszeichen die einfachen Anführungszeichen ersetzen. Warum verschwand der Raum vor und nach diesem Zitat? Dank

Antwort

0
/\W'|'\W/gi 

Sie sind alle nicht-Wort-Zeichen ersetzt durch einen Apostroph gefolgt (\W') oder (|) eine von einer Nicht-Wortzeichen gefolgt Apostroph ('\W) mit einem doppelten Anführungszeichen ohne Leerzeichen.

Leerzeichen zählen als Nicht-Wortzeichen, daher ersetzen Sie im Grunde das Leerzeichen und das einfache Anführungszeichen durch ein Anführungszeichen ohne Leerzeichen.

Hier ist eine Lösung für Ihr Problem:

function testRegExp(str) 
{ 
    var matchedStr = str.replace(/\W'/g, ' "').replace(/'\W/g, '" '); 
    return matchedStr; 
} 

console.log(testRegExp("I'm in a 'blue house with a cat' and I don't care!")) 
+0

ich den i-Modifikator weggelassen, weil es für dieses besondere Argument nicht erforderlich ist. –

+0

Fantastisch! Ich habe vergessen, dass der Platz als Nicht-Wort-Charakter gezählt wurde, der irritierend wurde ... –