2010-07-09 6 views
1

J'utilise ci-dessous expression régulière pour supprimer des commentaires de chaîneexpression régulière pour supprimer un commentaire javascript

<\!{1}\-{2}(.*?)\-{2}\s*> 

Cela fonctionne bien, sauf pour la chaîne mult-Irés

var search = '<\!{1}\-{2}(.*?)\-{2}\s*>'; 

    var re = new RegExp(search, "gm"); 

    var subject = <multi-line string>; 
    result = subject.replace(re, ''); 

Que dois-je faire pour obtenir il fonctionne avec des chaînes multilignes

+2

'-' ← Ce n'est pas un commentaire <->. – kennytm

+2

Une mauvaise idée. Considérons: 'var s =" "; ' –

Répondre

1

. ne permet pas les sauts de ligne.

Celui-ci devrait fonctionner:

^(<\!\-{2})((.|\s)*?)\-{2}>$ 

Fix:

<!--[\S\s]*?--> 

J'ai enlevé le \ s au début et à la fin de l'expression et l'a ajouté au milieu pour multilignes-commentaires sont permis.

Mais vous avez un oeil qui devraient à commentaire BartKs;)

concernant

+1

IMO,' --' est plus proche du point que '- {2}', et '(. | \ s)' pourrait être remplacé par '[\ s \ S]' . De même, '!' Et '-' n'ont pas besoin d'échapper. –

+0

Oui, vous avez raison, l'a réparé. –

+0

Pour la viande de l'expression, ne voulons-nous pas juste ([^ \ -] *), point d'interrogation. (Je me serais senti mal finissant ce commentaire avec un '?' Quand il pourrait facilement être interprété comme faisant partie de la regex, ce qui n'est pas le cas.) Edit: Il échouerait , je n'ai pas eu mon café du matin. – MikeD

Questions connexes