2016-08-16 7 views
0

Ich kann nicht herausfinden, wie die [ ] aus einer Zeichenfolge zu entfernen, so etwas wie:Regex zu entfernen [] und alle Elemente zwischen

option = 'Texture[0]' wird option = 'Texture'

Hier ist, was ich versuchte, nicht sicher, warum es nicht

Arbeits

option = option.replace(new RegExp('/\[[^\]]*\]/'), '');

+0

ohne regex können Sie split verwenden. sieh dir das an (Demo) (https://jsfiddle.net/pt7nk9zw/) – guradio

Antwort

2

In einem JS Stringliteral, müssen Sie Schrägstriche entkommen. Das heißt, um einen String mit einem einzelnen Backslash zu erstellen, würden Sie das Literal '\\' verwenden. Wenn Sie die Regex \[ in einer Zeichenfolge darstellen möchten, benötigen Sie '\\[' (und so weiter für jeden umgekehrten Schrägstrich in Ihrer bestimmten Regex).

Außerdem sind die / Zeichen nicht Teil des regulären Ausdrucks, in JS geben sie an, dass Sie ein reguläres Ausdrucksliteral verwenden. Also, wenn Sie eine Zeichenfolge mit new RegExp() tun nicht verwenden Sie die / am Anfang und Ende.

So:

option = option.replace(new RegExp('\\[[^\\]]*\\]'), ''); 

Aber anstatt new RegExp() mit einem String verwenden, ist es einfacher zu verwenden nur einen regulären Ausdruck wörtlichen:

option = option.replace(/\[[^\]]*\]/, ''); 

Wenn Sie eine längere Zeichenfolge mit mehreren Fällen von [...] haben , etwas wie 'Texture[0] Colour[3] Size[2]' dann benötigen Sie eine globale ersetzen, die Sie tun, indem Sie die g Flag der Regex wie folgt hinzufügen:

option = option.replace(/\[[^\]]*\]/g, ''); 
Verwandte Themen