2017-08-23 3 views
2

Ich möchte alle nicht alphanumerischen Zeichen in der Zeichenfolge ersetzen, indem Sie es für "[" und "]" selbst aufgeben.Regex ersetzen durch erfasst

Ich versuchte dies:

var text = "[email protected]*. ef"; 
var regex = /\W/g; 

var result = text.replace(regex, "[$0]"); 

console.log(result); 

Ich hatte erwartet, zu erhalten:

ab[!][@]1b[*][.][ ]ef

Aber stattdessen erhalte ich:

ab[$0][$0]1b[$0][$0][$0]ef

Wie kann ich dies mithilfe von Javascript (Knoten) tun?

+0

Keine Notwendigkeit, mit einfangenden Gruppen zu wickeln. Verwenden Sie 'text.replace (regex," [$ &] ")' –

Antwort

3

Sie müssen die Gruppe in Klammern wickeln Sie es zu $ ​​1 zuweisen, wie folgt aus:

var text = "[email protected]*. ef"; 
 
var regex = /(\W)/g; 
 

 
var result = text.replace(regex, "[$1]"); 
 

 
console.log(result);