2016-12-25 6 views
0

Ich bin versucht, eine Zeichenfolge mit einer anderen Zeichenfolge in Javascript zu ersetzen und mit der gegebenen Antwort in How do you use a variable in a regular expression? von Eric Wendelin - Code ist folgende:Javascript regulären Ausdruck nichts Fehler wiederholen

var re = new RegExp(delim, 'g'); 
return input.replace(re,","); 

Wenn ich diese laufen ich erhalte die Fehler

/*** /: Nichts

zu wiederholen (der Wert von delim ist "***" btw)

Ich verstehe, wenn Sie einen Nothing to Repeat Fehler bekommen, bedeutet es, dass Sie nicht richtig ein Zeichen in Ihrem Regexp entkommen, aber warum bekomme ich diesen Fehler in diesem Fall?

+0

'*' ist ein Token, das "Wiederholen Sie die vorherigen" bedeutet. Und es gibt nichts zu wiederholen, genauso wie es in der Botschaft steht. – vlaz

+0

Wollten Sie 3 Sterne zusammenbringen? Dann verwenden Sie '/ \ * {3}/g' –

+0

Könnten Sie bitte das erwartete Verhalten hier hinzufügen? das ist eine Beispielzeichenfolge und ersetzte Zeichenfolge –

Antwort

2

* ist das reservierte Wiederholungszeichen, das mindestens das 0-fache des vorherigen Zeichens oder der vorherigen Gruppe entspricht. Daher müssen Sie es zurückhalten (entspricht {0,}).

Ändern Sie die Begrenzungszeichenfolge in \\*\\*\\* oder \\*{3}.

delim = '\\*{3}' 
 
input = 'hello *** world' 
 
var re = new RegExp(delim, 'g'); 
 
console.log(input.replace(re, ","))

+0

groß, danke für die Klärung – auburg

Verwandte Themen