2010-10-07 15 views
0

j'ai essayé de ne pas montrer "SPAM" dans la chaîne ci-dessous à l'aide que regex:problème avec saut de ligne en JavaScript regexp

alert("{SPAM\nSPAM} _1_ {SPAM} _2_".replace(/{[\s\S]+}/gm, "")); 

Ce que je devais voir était "~ 1 ~ ~ 2 ~"

(ou quelque chose comme ça) mais j'ai juste ~ 2 ~. Pourquoi?

Répondre

6

} et { sont également des éléments de la classe de caractères [\s\S]. Vous devez éviter ce correspondant par:

/{[^}]+}/g 

de telle sorte que l'expression régulière arrête une fois que le } se trouve.

+0

Étais sur le point de poster quelque chose à propos de (dé) gourmand, mais c'est nettement mieux. – Wrikken