2017-10-29 2 views
-1

Ich habe eine ZeichenfolgeRegulärer Ausdruck für js Objekt

{{ renderBlock("sometext1",{ 
    id:1555267 
}) }} 
{{ renderBlock("sometext2",{ 
    id:15553 
}) }} 
{{ renderBlock("sometext3",{ 
    content:"somecontent" 
}) }} 

Also, ich brauche Argument Funktion renderBlock extrahiert ich die erste Argument analysieren kann, aber ich kann zweites Argument analysieren - JS

Die RegExp-Objekt /{{ renderBlock\("(.*)",{(.|\n)[^)}]*/ funktioniert nicht

Antwort

0

ich weiß nicht, wie Sie Ihre Zeichenfolge ändern, aber das funktioniert für das Beispiel gegeben:

renderBlock\("(.+)",((.|\n)+?)\) 

Gruppe 1 ist das erste Argument, Gruppe 2 ist das zweite Argument.

Try it here!

0

Das zweite Argument in geschweiften Klammern, vielleicht diese regex ist, was Sie suchen:

{{ renderBlock\("(.*)",({(?:.|\n)+?})

Diese in 2 einfangenden Gruppen führen.

0

Ich tweak Ihre Regex nur ein bisschen. Versuchen Sie, diese

'{{ renderBlock("sometext3",{content:"somecontent"}) }}'.match(/{{ renderBlock\("(.*)"(,\{[^)]*\})\)*.*/) 

Die regex

/{{ renderBlock\("(.*)"(,\{[^)]*\})\)*.*/